From e6957e79eb5e9f207216fb64ce720b095e5ae069 Mon Sep 17 00:00:00 2001 From: "jst@mozilla.org" Date: Thu, 21 Feb 2008 15:51:02 -0800 Subject: [PATCH] Fixing bug 417852. Push the context we're using to clear scopes on to make code down the road find the right context. r=dveditz@cruzio.com, sr=bzbarsky@mit.edu --- dom/src/base/nsJSEnvironment.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/dom/src/base/nsJSEnvironment.cpp b/dom/src/base/nsJSEnvironment.cpp index f1b949d8f38a..c4073ef97c30 100644 --- a/dom/src/base/nsJSEnvironment.cpp +++ b/dom/src/base/nsJSEnvironment.cpp @@ -1661,7 +1661,7 @@ nsJSContext::ExecuteScript(void *aScriptObject, JSAutoRequest ar(mContext); ok = ::JS_ExecuteScript(mContext, (JSObject *)aScopeObject, - (JSScript*) ::JS_GetPrivate(mContext, + (JSScript*)::JS_GetPrivate(mContext, (JSObject*)aScriptObject), &val); @@ -3137,6 +3137,13 @@ nsJSContext::InitClasses(void *aGlobalObj) void nsJSContext::ClearScope(void *aGlobalObj, PRBool aClearFromProtoChain) { + // Push our JSContext on our thread's context stack. + nsCOMPtr stack = + do_GetService("@mozilla.org/js/xpc/ContextStack;1"); + if (stack && NS_FAILED(stack->Push(mContext))) { + stack = nsnull; + } + if (aGlobalObj) { JSObject *obj = (JSObject *)aGlobalObj; JSAutoRequest ar(mContext); @@ -3167,8 +3174,12 @@ nsJSContext::ClearScope(void *aGlobalObj, PRBool aClearFromProtoChain) ::JS_ClearScope(mContext, o); } } + ::JS_ClearRegExpStatics(mContext); + if (stack) { + stack->Pop(nsnull); + } } void