BUG: must use dlerror() to clear prev errors before using dlsym()

This commit is contained in:
Mark Olesen 2011-02-25 18:18:41 +01:00
parent 0484d1b25b
commit b8f643f3da

View File

@ -1086,15 +1086,22 @@ bool Foam::dlClose(void* handle)
void* Foam::dlSym(void* handle, const std::string& symbol) void* Foam::dlSym(void* handle, const std::string& symbol)
{ {
// clear any old errors - see manpage dlopen
(void) ::dlerror();
// get address of symbol
void* fun = ::dlsym(handle, symbol.c_str()); void* fun = ::dlsym(handle, symbol.c_str());
char *error; // find error (if any)
if ((error = dlerror()) != NULL) char *error = ::dlerror();
if (error)
{ {
WarningIn("dlSym(void*, const std::string&)") WarningIn("dlSym(void*, const std::string&)")
<< "Cannot lookup symbol " << symbol << " : " << error << "Cannot lookup symbol " << symbol << " : " << error
<< endl; << endl;
} }
return fun; return fun;
} }