From 7d616bf099b57668086af0586f595c8d9ce534a2 Mon Sep 17 00:00:00 2001 From: "peterv@propagandism.org" Date: Mon, 5 Nov 2007 11:43:08 -0800 Subject: [PATCH] Fix for bug 402535 (Cycle collection crashes with Leak Monitor extension installed). Pending-r=sicking, sr=jst, a=dsicore. --- js/src/xpconnect/src/xpcjsruntime.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/js/src/xpconnect/src/xpcjsruntime.cpp b/js/src/xpconnect/src/xpcjsruntime.cpp index 19e821874ccb..bce26bc52f6b 100644 --- a/js/src/xpconnect/src/xpcjsruntime.cpp +++ b/js/src/xpconnect/src/xpcjsruntime.cpp @@ -454,15 +454,19 @@ void XPCJSRuntime::UnsetContextGlobals() if(nsXPConnect::GetXPConnect()->GetRequestDepth(acx) == 0) { JS_ClearNewbornRoots(acx); - JSDHashEntryHdr* entry = - JS_DHashTableOperate(&mClearedGlobalObjects, acx, JS_DHASH_ADD); - ClearedGlobalObject* clearedGlobal = - reinterpret_cast(entry); - if(clearedGlobal) + if(acx->globalObject) { - clearedGlobal->mContext = acx; - clearedGlobal->mGlobalObject = acx->globalObject; - acx->globalObject = nsnull; + JSDHashEntryHdr* entry = + JS_DHashTableOperate(&mClearedGlobalObjects, acx, + JS_DHASH_ADD); + ClearedGlobalObject* clearedGlobal = + reinterpret_cast(entry); + if(clearedGlobal) + { + clearedGlobal->mContext = acx; + clearedGlobal->mGlobalObject = acx->globalObject; + acx->globalObject = nsnull; + } } } }