diff -ru src/config.h src/config.h
--- src/config.h	2004-09-30 03:29:05.000000000 -0700
+++ src/config.h	2004-10-05 18:05:17.000000000 -0700
@@ -87,6 +87,11 @@
  * XXX
  */
 
+/*
+ * this really shouldnt matter to much
+ */
+#define DL_ERROR_RET const char *
+
 /* tuneables */
 #define SHLIB_EXT ".so"
 
diff -ru src/modules.c src/modules.c
--- src/modules.c	2004-09-30 03:29:05.000000000 -0700
+++ src/modules.c	2004-10-05 18:02:42.000000000 -0700
@@ -39,6 +39,7 @@
 	DIR *moddir=NULL;
 	struct dirent *de=NULL;
 	mod_entry_t *mnew=NULL, *last=NULL;
+	DL_ERROR_RET dl_estr=NULL;
 
 	if (s->verbose > 5) MSG(M_DBG1, "Opening dir `%s'", s->mod_dir);
 
@@ -87,16 +88,18 @@
 		}
 
 		mnew->dl_init_module=(int (*)(mod_entry_t *))dlsym(mnew->handle, "init_module");
-		if (dlerror() != NULL) {
-			MSG(M_ERR, "Can't find initialization hook for module `%s': %s", mnew->fname, dlerror());
+		dl_estr=dlerror();
+		if (dl_estr != NULL) {
+			MSG(M_ERR, "Can't find initialization hook for module `%s': %s", mnew->fname, dl_estr);
 			dlclose(mnew->handle);
 			xfree(mnew);
 			continue;
 		}
 
 		mnew->dl_delete_module=(void (*)(void))dlsym(mnew->handle, "delete_module");
-		if (dlerror() != NULL) {
-			MSG(M_ERR, "Can't find shutdown hook for module `%s': %s", mnew->fname, dlerror());
+		dl_estr=dlerror();
+		if (dl_estr != NULL) {
+			MSG(M_ERR, "Can't find shutdown hook for module `%s': %s", mnew->fname, dl_estr);
 			dlclose(mnew->handle);
 			xfree(mnew);
 			continue;
@@ -174,6 +177,7 @@
 
 int init_payload_modules(void) {
 	mod_entry_t *walk=NULL;
+	DL_ERROR_RET dl_estr=NULL;
 
 	if (mod_list_head == NULL) return 1;
 
@@ -182,8 +186,9 @@
 	for (walk=mod_list_head ; walk != NULL ; walk=walk->next) {
 		if (walk->type == MI_TYPE_PAYLOAD) {
 			walk->func_u.dl_create_payload=(int (*)(uint8_t **, uint32_t *))dlsym(walk->handle, "create_payload");
-			if (dlerror() != NULL) {
-				MSG(M_ERR, "Can't find payload initialization hook for module `%s': %s", walk->fname, dlerror());
+			dl_estr=dlerror();
+			if (dl_estr != NULL) {
+				MSG(M_ERR, "Can't find payload initialization hook for module `%s': %s", walk->fname, dl_estr);
 				dlclose(walk->handle);
 				continue;
 			}
@@ -209,6 +214,7 @@
 
 int init_output_modules(void) {
 	mod_entry_t *walk=NULL;
+	DL_ERROR_RET dl_estr=NULL;
 
 	if (mod_list_head == NULL) return 1;
 
@@ -222,8 +228,9 @@
 				continue;
 			}
 
-			if (dlerror() != NULL) {
-				MSG(M_ERR, "Can't find output initialization hook for module `%s': %s", walk->fname, dlerror());
+			dl_estr=dlerror();
+			if (dl_estr != NULL) {
+				MSG(M_ERR, "Can't find output initialization hook for module `%s': %s", walk->fname, dl_estr);
 				dlclose(walk->handle);
 				continue;
 			}
@@ -245,6 +252,7 @@
 
 int init_report_modules(void) {
 	mod_entry_t *walk=NULL;
+	DL_ERROR_RET dl_estr=NULL;
 
 	if (mod_list_head == NULL) return 1;
 
@@ -258,8 +266,9 @@
 				continue;
 			}
 
-			if (dlerror() != NULL) {
-				MSG(M_ERR, "Can't find report initialization hook for module `%s': %s", walk->fname, dlerror());
+			dl_estr=dlerror();
+			if (dl_estr != NULL) {
+				MSG(M_ERR, "Can't find report initialization hook for module `%s': %s", walk->fname, dl_estr);
 				dlclose(walk->handle);
 				continue;
 			}
