Fixing some releasing object bugs.

This commit is contained in:
dougt%netscape.com 1999-06-11 00:35:39 +00:00
Родитель 777a984fcd
Коммит 70511bbc92
2 изменённых файлов: 13 добавлений и 9 удалений

Просмотреть файл

@ -164,7 +164,7 @@ nsProxyEventClass::~nsProxyEventClass()
nsProxyObjectManager *manager = nsProxyObjectManager::GetInstance();
nsHashtable *iidToClassMap = manager->GetIIDToProxyClassMap();
if (iidToClassMap == nsnull)
if (iidToClassMap != nsnull)
{
iidToClassMap->Remove(&key);
}

Просмотреть файл

@ -67,10 +67,10 @@ nsProxyEventObject::GetNewOrUsedProxy(nsIEventQueue *destQueue,
return nsnull;
}
nsVoidKey key(rootObject);
if(realToProxyMap->Exists(&key))
nsVoidKey rootkey(rootObject);
if(realToProxyMap->Exists(&rootkey))
{
root = (nsProxyEventObject*) realToProxyMap->Get(&key);
root = (nsProxyEventObject*) realToProxyMap->Get(&rootkey);
proxy = root->Find(aIID);
if(proxy)
@ -87,7 +87,10 @@ nsProxyEventObject::GetNewOrUsedProxy(nsIEventQueue *destQueue,
// the root will do double duty as the interface wrapper
proxy = root = new nsProxyEventObject(destQueue, proxyType, aObj, clazz, nsnull);
if(root)
realToProxyMap->Put(&key, root);
{
nsVoidKey aKey(root);
realToProxyMap->Put(&aKey, root);
}
goto return_wrapper;
}
else
@ -106,7 +109,9 @@ nsProxyEventObject::GetNewOrUsedProxy(nsIEventQueue *destQueue,
{
goto return_wrapper;
}
realToProxyMap->Put(&key, root);
nsVoidKey aKey(root);
realToProxyMap->Put(&aKey, root);
}
}
// at this point we have a root and may need to build the specific proxy
@ -168,13 +173,12 @@ nsProxyEventObject::~nsProxyEventObject()
NS_PRECONDITION(0 == mRefCnt, "refcounting error");
if(mRoot == this && GetClass())
{
nsVoidKey key(this);
nsProxyObjectManager *manager = nsProxyObjectManager::GetInstance();
nsHashtable *realToProxyMap = manager->GetRealObjectToProxyObjectMap();
if (realToProxyMap == nsnull)
if (realToProxyMap != nsnull)
{
nsVoidKey key(this);
realToProxyMap->Remove(&key);
}
}