module_chain = NULL;
module_next = &module_chain;
gm = g_module_open(pathname,0);
- g_free(pathname);
+ g_free(pathname);
if(gm != NULL) break;
LttvLibrary *lttv_library_load(char *name, GError **error)
{
- LttvLibrary *l = library_load(name, error);
- l->info.load_count++;
+ LttvLibrary *l = library_load(name, error);
+ if(l != NULL) l->info.load_count++;
return l;
}
void lttv_library_unload(LttvLibrary *l)
{
- l->info.load_count--;
+ /* In the case where we wait for a module to release, the load count is 0
+ * and should not be decremented. */
+ if(l->info.load_count != 0) l->info.load_count--;
library_unload(l);
}