From 161d2babfd950cb46c771c2679925b389c0583db Mon Sep 17 00:00:00 2001 From: Alexey Yakovenko Date: Mon, 30 Jun 2014 13:51:00 +0200 Subject: added name comparison to plugin duplicate check, to avoid duplicate plugins when ID is not set --- plugins.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/plugins.c b/plugins.c index 804062df..7707f9a3 100644 --- a/plugins.c +++ b/plugins.c @@ -507,9 +507,11 @@ plug_init_plugin (DB_plugin_t* (*loadfunc)(DB_functions_t *), void *handle) { // check if same plugin with the same or bigger version is loaded already plugin_t *prev = NULL; for (plugin_t *p = plugins; p; prev = p, p = p->next) { - if (p->plugin->id && plugin_api->id && !strcmp (p->plugin->id, plugin_api->id)) { + int same_id = p->plugin->id && plugin_api->id && !strcmp (p->plugin->id, plugin_api->id); + int same_name = p->plugin->name && plugin_api->name && !strcmp (p->plugin->name, plugin_api->name); + if (same_id || same_name) { if (plugin_api->version_major > p->plugin->version_major || (plugin_api->version_major == p->plugin->version_major && plugin_api->version_minor > p->plugin->version_minor)) { - trace ("found newer version of plugin \"%s\", replacing\n", plugin_api->id); + trace ("found newer version of plugin \"%s\" (%s), replacing\n", plugin_api->id, plugin_api->name); // unload older plugin before replacing dlclose (p->handle); if (prev) { @@ -524,7 +526,7 @@ plug_init_plugin (DB_plugin_t* (*loadfunc)(DB_functions_t *), void *handle) { free (p); } else { - trace ("found copy of plugin \"%s\", but newer version is already loaded\n", plugin_api->id) + trace ("found copy of plugin \"%s\" (%s), but newer version is already loaded\n", plugin_api->id, plugin_api->name) return -1; } } -- cgit v1.2.3