X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fsrc%2Fcore%2Fmodules-load.c;h=42703fc653a14da643087cf8552b48657598111c;hb=52e57c880aba9c5e89f59d962eb9af75670b76e0;hp=7b90d802940a106cb9f70c4b6577531c16f32f61;hpb=bf652ec820e0d36d841832744a1c5221a4cb8f6c;p=silc.git diff --git a/apps/irssi/src/core/modules-load.c b/apps/irssi/src/core/modules-load.c index 7b90d802..42703fc6 100644 --- a/apps/irssi/src/core/modules-load.c +++ b/apps/irssi/src/core/modules-load.c @@ -97,7 +97,7 @@ static char *module_get_sub(const char *name, const char *root) strcmp(name+rootlen, "_core") == 0) return g_strdup("core"); - if (namelen+1 > rootlen && name[namelen-rootlen-1] == '_' && + if (namelen > rootlen && name[namelen-rootlen-1] == '_' && strcmp(name+namelen-rootlen, root) == 0) return g_strndup(name, namelen-rootlen-1); @@ -163,6 +163,7 @@ static int module_load_name(const char *path, const char *rootmodule, GModule *gmodule; MODULE_REC *module; MODULE_FILE_REC *rec; + gpointer value1, value2; char *initfunc, *deinitfunc; int found; @@ -178,11 +179,14 @@ static int module_load_name(const char *path, const char *rootmodule, /* get the module's init() and deinit() functions */ initfunc = module_get_func(rootmodule, submodule, "init"); deinitfunc = module_get_func(rootmodule, submodule, "deinit"); - found = g_module_symbol(gmodule, initfunc, (gpointer *) &module_init) && - g_module_symbol(gmodule, deinitfunc, (gpointer *) &module_deinit); + found = g_module_symbol(gmodule, initfunc, &value1) && + g_module_symbol(gmodule, deinitfunc, &value2); g_free(initfunc); g_free(deinitfunc); + module_init = value1; + module_deinit = value2; + if (!found) { module_error(MODULE_ERROR_INVALID, NULL, rootmodule, submodule);