This case in the "dso_unload" handlers should not be reported as an error -
if a DSO_load(NULL,...) operation fails, it will have to call DSO_free() on the DSO structure it created and that will filter through to this "unload" call. If the stack size is "< 1", then the library never actually loaded. To keep things clean higher up, I'll treat this as a vacuous case without an error. It makes the error stack easier to follow real world cases, and the error this ignores was only useful for catching bugs in internal code, not mismatched calls from applications (which should be handled in the generic DSO layer).
This commit is contained in:
parent
da414db464
commit
ebbaebf784
3 changed files with 3 additions and 12 deletions
|
@ -147,10 +147,7 @@ static int dl_unload(DSO *dso)
|
|||
return(0);
|
||||
}
|
||||
if(sk_num(dso->meth_data) < 1)
|
||||
{
|
||||
DSOerr(DSO_F_DL_UNLOAD,DSO_R_STACK_ERROR);
|
||||
return(0);
|
||||
}
|
||||
return(1);
|
||||
/* Is this statement legal? */
|
||||
ptr = (shl_t)sk_pop(dso->meth_data);
|
||||
if(ptr == NULL)
|
||||
|
|
|
@ -152,10 +152,7 @@ static int dlfcn_unload(DSO *dso)
|
|||
return(0);
|
||||
}
|
||||
if(sk_num(dso->meth_data) < 1)
|
||||
{
|
||||
DSOerr(DSO_F_DLFCN_UNLOAD,DSO_R_STACK_ERROR);
|
||||
return(0);
|
||||
}
|
||||
return(1);
|
||||
ptr = (void *)sk_pop(dso->meth_data);
|
||||
if(ptr == NULL)
|
||||
{
|
||||
|
|
|
@ -159,10 +159,7 @@ static int win32_unload(DSO *dso)
|
|||
return(0);
|
||||
}
|
||||
if(sk_num(dso->meth_data) < 1)
|
||||
{
|
||||
DSOerr(DSO_F_WIN32_UNLOAD,DSO_R_STACK_ERROR);
|
||||
return(0);
|
||||
}
|
||||
return(1);
|
||||
p = (HINSTANCE *)sk_pop(dso->meth_data);
|
||||
if(p == NULL)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue