Bug 646380 - jsd_GetValueString needs to null out 'call' after leaving the cross compartment call (r=sphink)
--- a/js/jsd/jsd_val.c
+++ b/js/jsd/jsd_val.c
@@ -235,16 +235,17 @@ jsd_GetValueString(JSDContext* jsdc, JSD
return NULL;
}
exceptionState = JS_SaveExceptionState(cx);
string = JS_ValueToString(cx, jsdval->val);
JS_RestoreExceptionState(cx, exceptionState);
JS_LeaveCrossCompartmentCall(call);
+ call = NULL;
if(string) {
stringval = STRING_TO_JSVAL(string);
call = JS_EnterCrossCompartmentCall(cx, jsdc->glob);
}
if(!string || !call || !JS_WrapValue(cx, &stringval)) {
if(call)
JS_LeaveCrossCompartmentCall(call);