--- a/src/dvdnav.c      2009-11-08 16:58:25.000000000 +0300
+++ b/src/dvdnav.c      2009-11-08 16:58:52.000000000 +0300
@@ -180,12 +180,13 @@
     pthread_mutex_unlock(&this->vm_lock);
     return DVDNAV_STATUS_ERR;
   }
+  pthread_mutex_unlock(&this->vm_lock);
+
 #ifdef LOG_DEBUG
   fprintf(MSG_OUT, "libdvdnav: clearing dvdnav\n");
 #endif
   result = dvdnav_clear(this);
 
-  pthread_mutex_unlock(&this->vm_lock);
   return result;
 }