From 32ff1f0aa449fd94258316fd772cdab4ff3dbeff Mon Sep 17 00:00:00 2001 From: Gustavo Sverzut Barbieri Date: Tue, 16 Jun 2009 14:59:09 +0000 Subject: [PATCH] better error setting and reporting in module loading. * just set error codes if we know the error. * debug dlopen() error using EINA_ERROR_PDBG() SVN revision: 41057 --- legacy/eina/src/lib/eina_module.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/legacy/eina/src/lib/eina_module.c b/legacy/eina/src/lib/eina_module.c index 6abd6ed2e6..c39aa34a47 100644 --- a/legacy/eina/src/lib/eina_module.c +++ b/legacy/eina/src/lib/eina_module.c @@ -210,12 +210,14 @@ EAPI Eina_Bool eina_module_load(Eina_Module *m) if (m->handle) goto loaded; - eina_error_set(EINA_ERROR_WRONG_MODULE); - dl_handle = dlopen(m->file, RTLD_NOW); - if (!dl_handle) return EINA_FALSE; - - eina_error_set(EINA_ERROR_MODULE_INIT_FAILED); + if (!dl_handle) + { + EINA_ERROR_PDBG("could not dlopen(\"%s\", RTLD_NOW): %s\n", + m->file, dlerror()); + eina_error_set(EINA_ERROR_WRONG_MODULE); + return EINA_FALSE; + } initcall = dlsym(dl_handle, EINA_MODULE_SYMBOL_INIT); if ((!initcall) || (!(*initcall))) @@ -223,6 +225,7 @@ EAPI Eina_Bool eina_module_load(Eina_Module *m) if ((*initcall)() == EINA_TRUE) goto ok; + eina_error_set(EINA_ERROR_MODULE_INIT_FAILED); dlclose(dl_handle); return EINA_FALSE; ok: