Use right compartment when resolving prototypes (bug 620028, r=jst).

This commit is contained in:
Andreas Gal 2011-01-06 22:31:14 -08:00
Родитель 5816101b08
Коммит 53b8d1381b
1 изменённых файлов: 10 добавлений и 0 удалений

Просмотреть файл

@ -6266,6 +6266,11 @@ ResolvePrototype(nsIXPConnect *aXPConnect, nsGlobalWindow *aWin, JSContext *cx,
}
if (dot_prototype) {
JSAutoEnterCompartment ac;
if (!ac.enter(cx, dot_prototype)) {
return NS_ERROR_UNEXPECTED;
}
JSObject *xpc_proto_proto = ::JS_GetPrototype(cx, dot_prototype);
if (proto &&
@ -6277,6 +6282,11 @@ ResolvePrototype(nsIXPConnect *aXPConnect, nsGlobalWindow *aWin, JSContext *cx,
}
}
} else {
JSAutoEnterCompartment ac;
if (!ac.enter(cx, winobj)) {
return NS_ERROR_UNEXPECTED;
}
dot_prototype = ::JS_NewObject(cx, &sDOMConstructorProtoClass, proto,
winobj);
NS_ENSURE_TRUE(dot_prototype, NS_ERROR_OUT_OF_MEMORY);