From 5bb35c466562ff0ef7c99358a2fbca02599287ef Mon Sep 17 00:00:00 2001 From: "mccabe%netscape.com" Date: Thu, 25 May 2000 08:33:53 +0000 Subject: [PATCH] Fix the fix to 40406, fixing bustage. Don't destroy the per-thread safe JS context on cleanup if that context was provided through the setter. r=waterson git-svn-id: svn://10.0.0.236/trunk@70829 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/js/src/xpconnect/src/xpcprivate.h | 1 + mozilla/js/src/xpconnect/src/xpcthreadcontext.cpp | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/mozilla/js/src/xpconnect/src/xpcprivate.h b/mozilla/js/src/xpconnect/src/xpcprivate.h index 7e676ffa4db..d1c0e8af62e 100644 --- a/mozilla/js/src/xpconnect/src/xpcprivate.h +++ b/mozilla/js/src/xpconnect/src/xpcprivate.h @@ -1371,6 +1371,7 @@ private: nsDeque* mJSContextStack; JSContext* mSafeJSContext; xpcPerThreadData* mNextThread; + PRBool mSafeContextIsFromSetter; static PRLock* gLock; static xpcPerThreadData* gThreads; diff --git a/mozilla/js/src/xpconnect/src/xpcthreadcontext.cpp b/mozilla/js/src/xpconnect/src/xpcthreadcontext.cpp index bf3f2c0430b..f59a0a0deab 100644 --- a/mozilla/js/src/xpconnect/src/xpcthreadcontext.cpp +++ b/mozilla/js/src/xpconnect/src/xpcthreadcontext.cpp @@ -198,7 +198,8 @@ xpcPerThreadData::xpcPerThreadData() : mException(nsnull), mJSContextStack(new nsDeque(nsnull)), mSafeJSContext(nsnull), - mNextThread(nsnull) + mNextThread(nsnull), + mSafeContextIsFromSetter(PR_FALSE) { if(gLock) { @@ -219,7 +220,7 @@ xpcPerThreadData::Cleanup() mJSContextStack = nsnull; } - if(mSafeJSContext) + if(mSafeJSContext && !mSafeContextIsFromSetter) { JS_DestroyContext(mSafeJSContext); mSafeJSContext = nsnull; @@ -328,8 +329,8 @@ xpcPerThreadData::GetSafeJSContext() nsresult xpcPerThreadData::SetSafeJSContext(JSContext *cx) { - NS_ASSERTION(!mSafeJSContext, "SetSafeJSContext called too late!"); mSafeJSContext = cx; + mSafeContextIsFromSetter = PR_TRUE; return NS_OK; }