summaryrefslogtreecommitdiff
path: root/gtk/gtkmain.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkmain.c')
-rw-r--r--gtk/gtkmain.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c
index 1c315b3262..19c6d2f79f 100644
--- a/gtk/gtkmain.c
+++ b/gtk/gtkmain.c
@@ -309,12 +309,12 @@ gtk_init (int *argc,
}
(*argv)[i] = NULL;
}
- else if (strcmp ("--gtk-with-module", (*argv)[i]) == 0 ||
- strncmp ("--gtk-with-module=", (*argv)[i], 18) == 0)
+ else if (strcmp ("--gtk-module", (*argv)[i]) == 0 ||
+ strncmp ("--gtk-module=", (*argv)[i], 13) == 0)
{
GModule *module = NULL;
GtkModuleInitFunc modinit_func = NULL;
- gchar *module_name = (*argv)[i] + 17;
+ gchar *module_name = (*argv)[i] + 12;
if (*module_name == '=')
module_name++;
@@ -339,7 +339,15 @@ gtk_init (int *argc,
if (module &&
g_module_symbol (module, "gtk_module_init", (gpointer*) &modinit_func) &&
modinit_func)
- gtk_modinit_funcs = g_slist_prepend (gtk_modinit_funcs, modinit_func);
+ {
+ if (!g_slist_find (gtk_modinit_funcs, modinit_func))
+ gtk_modinit_funcs = g_slist_prepend (gtk_modinit_funcs, modinit_func);
+ else
+ {
+ g_module_close (module);
+ module = NULL;
+ }
+ }
}
if (!modinit_func)
{