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
This commit is contained in:
mccabe%netscape.com
2000-05-25 08:33:53 +00:00
parent 77c67afe23
commit 5bb35c4665
2 changed files with 5 additions and 3 deletions

View File

@@ -1371,6 +1371,7 @@ private:
nsDeque* mJSContextStack;
JSContext* mSafeJSContext;
xpcPerThreadData* mNextThread;
PRBool mSafeContextIsFromSetter;
static PRLock* gLock;
static xpcPerThreadData* gThreads;

View File

@@ -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;
}