diff --git a/js/src/jsinterp.c b/js/src/jsinterp.c index f621f9b6a77b..bbed159399ee 100644 --- a/js/src/jsinterp.c +++ b/js/src/jsinterp.c @@ -5451,7 +5451,12 @@ interrupt: BEGIN_CASE(JSOP_GOSUB) JS_ASSERT(cx->exception != JSVAL_HOLE); - lval = cx->throwing ? cx->exception : JSVAL_HOLE; + if (!cx->throwing) { + lval = JSVAL_HOLE; + } else { + lval = cx->exception; + cx->throwing = JS_FALSE; + } PUSH(lval); i = PTRDIFF(pc, script->main, jsbytecode) + JSOP_GOSUB_LENGTH; len = GET_JUMP_OFFSET(pc);