Bug 600580 - TM: set right compartment in _newJSDContext r=gwagner
--- a/js/jsd/jsd_high.c
+++ b/js/jsd/jsd_high.c
@@ -134,28 +134,31 @@ static JSDContext*
goto label_newJSDContext_failure;
jsdc->dumbContext = JS_NewContext(jsdc->jsrt, 256);
if( ! jsdc->dumbContext )
goto label_newJSDContext_failure;
JS_BeginRequest(jsdc->dumbContext);
- if( scopeobj )
- call = JS_EnterCrossCompartmentCall(jsdc->dumbContext, scopeobj);
- jsdc->glob = JS_NewGlobalObject(jsdc->dumbContext, &global_class);
- if( call )
- JS_LeaveCrossCompartmentCall(call);
+ jsdc->glob = JS_NewCompartmentAndGlobalObject(jsdc->dumbContext, &global_class, NULL);
if( ! jsdc->glob )
goto label_newJSDContext_failure;
+ call = JS_EnterCrossCompartmentCall(jsdc->dumbContext, jsdc->glob);
+ if( ! call )
+ goto label_newJSDContext_failure;
+
if( ! JS_InitStandardClasses(jsdc->dumbContext, jsdc->glob) )
goto label_newJSDContext_failure;
+ if( call )
+ JS_LeaveCrossCompartmentCall(call);
+
JS_EndRequest(jsdc->dumbContext);
jsdc->data = NULL;
jsdc->inited = JS_TRUE;
JSD_LOCK();
JS_INSERT_LINK(&jsdc->links, &_jsd_context_list);
JSD_UNLOCK();