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:
Geoff Thorpe 2000-04-25 08:37:12 +00:00
parent da414db464
commit ebbaebf784
3 changed files with 3 additions and 12 deletions

View file

@ -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)

View file

@ -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)
{

View file

@ -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)
{