BUG: must use dlerror() to clear prev errors before using dlsym()
This commit is contained in:
parent
0484d1b25b
commit
b8f643f3da
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user