changeset 4376:364d9c7563df HEAD

Handle errors more correctly. Fixes problems with some OSes.
author Timo Sirainen <tss@iki.fi>
date Fri, 16 Jun 2006 13:15:56 +0300
parents 4fa4d1d299d3
children 25b6b670656d
files src/lib/module-dir.c
diffstat 1 files changed, 10 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/module-dir.c	Fri Jun 16 13:11:08 2006 +0300
+++ b/src/lib/module-dir.c	Fri Jun 16 13:15:56 2006 +0300
@@ -24,14 +24,18 @@
 	const char *error;
 	void *ret;
 
+	/* clear out old errors */
+	(void)dlerror();
+
 	/* get our init func */
 	ret = dlsym(module->handle, symbol);
-
-	error = dlerror();
-	if (error != NULL) {
-		i_error("module %s: dlsym(%s) failed: %s",
-			module->path, symbol, error);
-		ret = NULL;
+	if (ret == NULL) {
+		error = dlerror();
+		if (error != NULL) {
+			i_error("module %s: dlsym(%s) failed: %s",
+				module->path, symbol, error);
+			ret = NULL;
+		}
 	}
 
 	return ret;