fix module.c bug
[lttv.git] / ltt / branches / poly / lttv / lttv / module.c
index a1826b91430e2255396d4f6a9f82278bc8c0772f..e2d4d2caafa3d1d6a5767e7f620a1dbeb28d1bb6 100644 (file)
@@ -559,6 +559,7 @@ static void destroy()
   locked_libraries = g_new(LttvLibrary *, nb);
 
   for(i = 0 ; i < nb ; i++) {
+    //g_assert(nb == libraries->len);
     l = (LttvLibrary *)(libraries->pdata[i]);
     locked_libraries[i] = l;
     library_lock_loaded(l);
@@ -566,7 +567,16 @@ static void destroy()
       m = (LttvModule *)(l->modules->pdata[j]);
       while(m->info.require_count > 0) lttv_module_release(m);
     }
+    library_unlock_loaded(l);
     while(l->info.load_count > 0) lttv_library_unload(l);
+
+    /* If the number of librairies loaded have changed, restart from the
+     * beginning */
+    if(nb != libraries->len) {
+      i = 0;
+      nb = libraries->len;
+    }
+
   }
 
   for(i = 0 ; i < nb ; i++) {
This page took 0.02298 seconds and 4 git commands to generate.