diff --git a/js/src/jsexn.cpp b/js/src/jsexn.cpp index 10edf66b748..7e881859314 100644 --- a/js/src/jsexn.cpp +++ b/js/src/jsexn.cpp @@ -296,6 +296,8 @@ InitExnPrivate(JSContext *cx, JSObject *exnObject, JSString *message, stackDepth = 0; valueCount = 0; for (fp = js_GetTopStackFrame(cx); fp; fp = fp->prev()) { + if (fp->scopeChain().compartment() != cx->compartment) + break; if (fp->isFunctionFrame() && !fp->isEvalFrame()) { Value v = NullValue(); if (checkAccess && @@ -337,6 +339,8 @@ InitExnPrivate(JSContext *cx, JSObject *exnObject, JSString *message, values = GetStackTraceValueBuffer(priv); elem = priv->stackElems; for (fp = js_GetTopStackFrame(cx); fp != fpstop; fp = fp->prev()) { + if (fp->scopeChain().compartment() != cx->compartment) + break; if (!fp->isFunctionFrame() || fp->isEvalFrame()) { elem->funName = NULL; elem->argc = 0;