зеркало из https://github.com/mozilla/gecko-dev.git
bug 580128 - Fix more compartment warnings. Work of multiple people. r=gal/peterv/jst
This commit is contained in:
Родитель
969bd22678
Коммит
644aa16e54
|
@ -151,7 +151,7 @@ nsXBLProtoImplMethod::InstallMember(nsIScriptContext* aContext,
|
||||||
JSAutoRequest ar(cx);
|
JSAutoRequest ar(cx);
|
||||||
JSAutoEnterCompartment ac;
|
JSAutoEnterCompartment ac;
|
||||||
|
|
||||||
if (!ac.enter(cx, mJSMethodObject)) {
|
if (!ac.enter(cx, globalObject)) {
|
||||||
return NS_ERROR_UNEXPECTED;
|
return NS_ERROR_UNEXPECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -312,6 +312,10 @@ nsXBLProtoImplAnonymousMethod::Execute(nsIContent* aBoundElement)
|
||||||
JSObject* thisObject = JSVAL_TO_OBJECT(v);
|
JSObject* thisObject = JSVAL_TO_OBJECT(v);
|
||||||
|
|
||||||
JSAutoRequest ar(cx);
|
JSAutoRequest ar(cx);
|
||||||
|
JSAutoEnterCompartment ac;
|
||||||
|
|
||||||
|
if (!ac.enter(cx, thisObject))
|
||||||
|
return NS_ERROR_UNEXPECTED;
|
||||||
|
|
||||||
// Clone the function object, using thisObject as the parent so "this" is in
|
// Clone the function object, using thisObject as the parent so "this" is in
|
||||||
// the scope chain of the resulting function (for backwards compat to the
|
// the scope chain of the resulting function (for backwards compat to the
|
||||||
|
|
|
@ -176,6 +176,11 @@ nsXBLProtoImplProperty::InstallMember(nsIScriptContext* aContext,
|
||||||
if ((mJSGetterObject || mJSSetterObject) && targetClassObject) {
|
if ((mJSGetterObject || mJSSetterObject) && targetClassObject) {
|
||||||
JSObject * getter = nsnull;
|
JSObject * getter = nsnull;
|
||||||
JSAutoRequest ar(cx);
|
JSAutoRequest ar(cx);
|
||||||
|
JSAutoEnterCompartment ac;
|
||||||
|
|
||||||
|
if (!ac.enter(cx, globalObject))
|
||||||
|
return NS_ERROR_UNEXPECTED;
|
||||||
|
|
||||||
if (mJSGetterObject)
|
if (mJSGetterObject)
|
||||||
if (!(getter = ::JS_CloneFunctionObject(cx, mJSGetterObject, globalObject)))
|
if (!(getter = ::JS_CloneFunctionObject(cx, mJSGetterObject, globalObject)))
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
return NS_ERROR_OUT_OF_MEMORY;
|
||||||
|
|
|
@ -1187,8 +1187,10 @@ bool
|
||||||
JSAutoEnterCompartment::enter(JSContext *cx, JSObject *target)
|
JSAutoEnterCompartment::enter(JSContext *cx, JSObject *target)
|
||||||
{
|
{
|
||||||
JS_ASSERT(!call);
|
JS_ASSERT(!call);
|
||||||
if (cx->compartment == target->getCompartment())
|
if (cx->compartment == target->getCompartment()) {
|
||||||
|
call = reinterpret_cast<JSCrossCompartmentCall*>(1);
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
call = JS_EnterCrossCompartmentCall(cx, target);
|
call = JS_EnterCrossCompartmentCall(cx, target);
|
||||||
return call != NULL;
|
return call != NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -979,12 +979,14 @@ class JS_PUBLIC_API(JSAutoEnterCompartment)
|
||||||
bool entered() const { return call != NULL; }
|
bool entered() const { return call != NULL; }
|
||||||
|
|
||||||
~JSAutoEnterCompartment() {
|
~JSAutoEnterCompartment() {
|
||||||
if (call)
|
if (call && call != reinterpret_cast<JSCrossCompartmentCall*>(1))
|
||||||
JS_LeaveCrossCompartmentCall(call);
|
JS_LeaveCrossCompartmentCall(call);
|
||||||
}
|
}
|
||||||
|
|
||||||
void swap(JSAutoEnterCompartment &other) {
|
void swap(JSAutoEnterCompartment &other) {
|
||||||
JSCrossCompartmentCall *tmp = call;
|
JSCrossCompartmentCall *tmp = call;
|
||||||
|
if (tmp == reinterpret_cast<JSCrossCompartmentCall*>(1))
|
||||||
|
tmp = NULL;
|
||||||
call = other.call;
|
call = other.call;
|
||||||
other.call = tmp;
|
other.call = tmp;
|
||||||
}
|
}
|
||||||
|
|
|
@ -217,6 +217,14 @@ mozJSSubScriptLoader::LoadSubScript (const PRUnichar * aURL
|
||||||
fprintf (stderr, "Final global: %p\n", target_obj);
|
fprintf (stderr, "Final global: %p\n", target_obj);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
else if (target_obj->isWrapper())
|
||||||
|
{
|
||||||
|
target_obj = target_obj->unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
JSAutoEnterCompartment ac;
|
||||||
|
if (!ac.enter(cx, target_obj))
|
||||||
|
return NS_ERROR_UNEXPECTED;
|
||||||
|
|
||||||
/* load up the url. From here on, failures are reflected as ``custom''
|
/* load up the url. From here on, failures are reflected as ``custom''
|
||||||
* js exceptions */
|
* js exceptions */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче