bug 580128 - Fix a bug in early XrayWrappers that allowed Holders to get in here. r=gal

This commit is contained in:
Blake Kaplan 2010-09-17 14:54:41 -07:00
Родитель 9effc3a49a
Коммит bb8641798d
1 изменённых файлов: 11 добавлений и 0 удалений

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

@ -78,6 +78,17 @@ WrapperFactory::Rewrap(JSContext *cx, JSObject *obj, JSObject *wrappedProto, JSO
if (!obj)
return nsnull;
// Ugly hack to avoid wrapping holder objects instead of the actual
// underlying wrapped native JS object.
if (JS_GET_CLASS(cx, obj) == &HolderClass) {
obj = XrayWrapper<JSCrossCompartmentWrapper>::unwrapHolder(cx, obj);
OBJ_TO_OUTER_OBJECT(cx, obj);
if (!JS_WrapObject(cx, &obj))
return nsnull;
return obj;
}
JSCompartment *origin = obj->getCompartment(cx);
JSCompartment *target = cx->compartment;