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:
@@ -1371,6 +1371,7 @@ private:
|
||||
nsDeque* mJSContextStack;
|
||||
JSContext* mSafeJSContext;
|
||||
xpcPerThreadData* mNextThread;
|
||||
PRBool mSafeContextIsFromSetter;
|
||||
|
||||
static PRLock* gLock;
|
||||
static xpcPerThreadData* gThreads;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user