Fix crash from patch for bug 401687 (Stop refcounting JS objects in the cycle collector). r/sr=jst, a=dsicore@mozilla.com.

This commit is contained in:
peterv@propagandism.org 2007-11-02 08:48:00 -07:00
Родитель 6eb5ef3b5b
Коммит d717255ca2
1 изменённых файлов: 14 добавлений и 14 удалений

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

@ -461,7 +461,20 @@ void
nsXPCWrappedJS::Unlink()
{
XPCJSRuntime* rt = nsXPConnect::GetRuntime();
if(mRoot != this)
if(mRoot == this)
{
// remove this root wrapper from the map
if(rt)
{
JSObject2WrappedJSMap* map = rt->GetWrappedJSMap();
if(map)
{
XPCAutoLock lock(rt->GetMapLock());
map->Remove(this);
}
}
}
else if(mRoot)
{
// unlink this wrapper
nsXPCWrappedJS* cur = mRoot;
@ -478,19 +491,6 @@ nsXPCWrappedJS::Unlink()
// let the root go
NS_RELEASE(mRoot);
}
else
{
// remove this root wrapper from the map
if(rt)
{
JSObject2WrappedJSMap* map = rt->GetWrappedJSMap();
if(map)
{
XPCAutoLock lock(rt->GetMapLock());
map->Remove(this);
}
}
}
if(IsValid())
{