nsresult rv = proc(serviceMgr); if (NS_FAILED(rv))
PRBool canUnload = proc(serviceMgr); if (canUnload == PR_TRUE)
nsFreeLibraryEnum(nsHashKey *aKey, void *aData, void* closure) {    nsFactoryEntry *entry = (nsFactoryEntry *) aData;    nsIServiceManager* serviceMgr = (nsIServiceManager*)closure;    	    if (entry->dll && entry->dll->IsLoaded() == PR_TRUE)    {        nsCanUnloadProc proc = (nsCanUnloadProc) entry->dll->FindSymbol("NSCanUnload");        if (proc != NULL) {            nsresult rv = proc(serviceMgr);            if (NS_FAILED(rv))            {                PR_LOG(nsComponentManagerLog, PR_LOG_ALWAYS,                        ("nsComponentManager: + Unloading \"%s\".", entry->dll->GetNativePath()));                entry->dll->Unload();            }        }    }    	    return PR_TRUE;}