summaryrefslogtreecommitdiff
path: root/src/plugins/pglist.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/pglist.c')
-rw-r--r--src/plugins/pglist.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/plugins/pglist.c b/src/plugins/pglist.c
index bca3e6a..6b51690 100644
--- a/src/plugins/pglist.c
+++ b/src/plugins/pglist.c
@@ -151,13 +151,10 @@ void browse_directory_for_plugins(plugins_list *list, const char *dir)
else
{
- plugin = g_plugin_module_new(filename, list->ref);
+ plugin = g_plugin_module_new(filename);
if (plugin != NULL)
- {
- list->plugins = (GPluginModule **)realloc(list->plugins, ++list->plugins_count * sizeof(GPluginModule *));
- list->plugins[list->plugins_count - 1] = plugin;
- }
+ add_plugin_to_main_list(plugin);
}
@@ -253,6 +250,14 @@ void add_plugin_to_main_list(GPluginModule *plugin)
list = &_list;
+ if (plugin->init != NULL && !plugin->init(plugin, list->ref))
+ {
+ log_variadic_message(LMT_ERROR, _("Initialization of plugin '%s' failed !"),
+ plugin->filename);
+ g_object_unref(G_OBJECT(plugin));
+ return;
+ }
+
list->plugins = (GPluginModule **)realloc(list->plugins, ++list->plugins_count * sizeof(GPluginModule *));
list->plugins[list->plugins_count - 1] = plugin;