From 632dae6f4f2b78409eec65e0d231d64ecd51f00c Mon Sep 17 00:00:00 2001 From: "brendan%mozilla.org" Date: Mon, 12 Feb 2007 19:08:50 +0000 Subject: [PATCH] Fix from Mats Palmgren for 369805, r=me. git-svn-id: svn://10.0.0.236/trunk@219985 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/js/src/jslock.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mozilla/js/src/jslock.c b/mozilla/js/src/jslock.c index 54b4da4bf90..0a0e126c830 100644 --- a/mozilla/js/src/jslock.c +++ b/mozilla/js/src/jslock.c @@ -1242,6 +1242,15 @@ js_LockObj(JSContext *cx, JSObject *obj) JSScope *scope; JS_ASSERT(OBJ_IS_NATIVE(obj)); + + /* + * We must test whether the GC is calling and return without mutating any + * state, especially cx->lockedSealedScope. Note asymmetry with respect to + * js_UnlockObj, which is a thin-layer on top of js_UnlockScope. + */ + if (CX_THREAD_IS_RUNNING_GC(cx)) + return; + for (;;) { scope = OBJ_SCOPE(obj); if (SCOPE_IS_SEALED(scope) && scope->object == obj &&