diff --git a/libobs/obs-module.c b/libobs/obs-module.c index 1fc59f418..cc2f5e186 100644 --- a/libobs/obs-module.c +++ b/libobs/obs-module.c @@ -291,7 +291,8 @@ static void load_all_callback(void *param, const struct obs_module_info *info) return; } - obs_init_module(module); + if (!obs_init_module(module)) + free_module(module); UNUSED_PARAMETER(param); } @@ -499,6 +500,16 @@ void free_module(struct obs_module *mod) /* os_dlclose(mod->module); */ } + for (obs_module_t *m = obs->first_module; !!m; m = m->next) { + if (m->next == mod) { + m->next = mod->next; + break; + } + } + + if (obs->first_module == mod) + obs->first_module = mod->next; + bfree(mod->mod_name); bfree(mod->bin_path); bfree(mod->data_path);