proper checking for dlerror on failed dso load
--- freeswitch/trunk/src/switch_dso.c 2010-04-21 13:26:54 UTC (rev 17358)
+++ freeswitch/trunk/src/switch_dso.c 2010-04-21 14:53:26 UTC (rev 17359)
@@ -127,7 +127,16 @@
{
void *addr = dlsym(lib, sym);
if (!addr) {
- *err = strdup(dlerror());
+ char *err_str = NULL;
+ dlerror();
+
+ if (!(addr = dlsym(lib, sym))) {
+ err_str = dlerror();
+ }
+
+ if (err_str) {
+ *err = strdup(err_str);
+ }
}
return addr;
}