From: Howard Chu Date: Tue, 28 Sep 1999 09:54:00 +0000 (+0000) Subject: Fix bug in reporting errors from ltdl library. X-Git-Tag: UCDATA_2_4~363 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d08ac44eefc265bbc9bad7623dd578a5c107d169;p=thirdparty%2Fopenldap.git Fix bug in reporting errors from ltdl library. --- diff --git a/servers/slapd/module.c b/servers/slapd/module.c index 7dd253a806..37884f254b 100644 --- a/servers/slapd/module.c +++ b/servers/slapd/module.c @@ -7,18 +7,29 @@ #include -int module_load(const char* file_name, int argc, char *argv[]) { +int module_load(const char* file_name, int argc, char *argv[]) +{ lt_dlhandle* module = NULL; + const char *error; + + /* + * The result of lt_dlerror(), when called, must be cached prior + * to calling Debug. This is because Debug is a macro that expands + * into multiple function calls. + */ + int (*initialize) LDAP_P((int argc, char *argv[])); if (lt_dlinit()) { - Debug(LDAP_DEBUG_ANY, "lt_dlinit failed: %s\n", lt_dlerror(), 0, 0); + error = lt_dlerror(); + Debug(LDAP_DEBUG_ANY, "lt_dlinit failed: %s\n", error, 0, 0); return -1; } if ((module = lt_dlopen(file_name)) == NULL) { + error = lt_dlerror(); Debug(LDAP_DEBUG_ANY, "lt_dlopen failed: (%s) %s\n", file_name, - lt_dlerror(), 0); + error, 0); return -1; } @@ -32,10 +43,19 @@ int module_load(const char* file_name, int argc, char *argv[]) { return -1; } -int module_path(const char *path) { +int module_path(const char *path) +{ + const char *error; + + /* + * The result of lt_dlerror(), when called, must be cached prior + * to calling Debug. This is because Debug is a macro that expands + * into multiple function calls. + */ if (lt_dlinit()) { - Debug(LDAP_DEBUG_ANY, "lt_dlinit failed: %s\n", lt_dlerror(), 0, 0); + error = lt_dlerror(); + Debug(LDAP_DEBUG_ANY, "lt_dlinit failed: %s\n", error, 0, 0); return -1; }