mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 839376 (part 10) - Fix five rooting hazards in jsproxy.cpp. r=terrence.
--HG-- extra : rebase_source : 3a6220485cff14cca365a866dbcc21fda701b5b4
This commit is contained in:
parent
bceaf59849
commit
90debf9603
@ -217,10 +217,12 @@ BaseProxyHandler::set(JSContext *cx, JSObject *proxy_, JSObject *receiver_, jsid
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseProxyHandler::keys(JSContext *cx, JSObject *proxy, AutoIdVector &props)
|
BaseProxyHandler::keys(JSContext *cx, JSObject *proxyArg, AutoIdVector &props)
|
||||||
{
|
{
|
||||||
JS_ASSERT(props.length() == 0);
|
JS_ASSERT(props.length() == 0);
|
||||||
|
|
||||||
|
RootedObject proxy(cx, proxyArg);
|
||||||
|
|
||||||
if (!getOwnPropertyNames(cx, proxy, props))
|
if (!getOwnPropertyNames(cx, proxy, props))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -427,9 +429,9 @@ DirectProxyHandler::getOwnPropertyNames(JSContext *cx, JSObject *proxy,
|
|||||||
bool
|
bool
|
||||||
DirectProxyHandler::delete_(JSContext *cx, JSObject *proxy, jsid id, bool *bp)
|
DirectProxyHandler::delete_(JSContext *cx, JSObject *proxy, jsid id, bool *bp)
|
||||||
{
|
{
|
||||||
Value v;
|
RootedValue v(cx);
|
||||||
RootedObject target(cx, GetProxyTargetObject(proxy));
|
RootedObject target(cx, GetProxyTargetObject(proxy));
|
||||||
if (!JS_DeletePropertyById2(cx, target, id, &v))
|
if (!JS_DeletePropertyById2(cx, target, id, v.address()))
|
||||||
return false;
|
return false;
|
||||||
JSBool b;
|
JSBool b;
|
||||||
if (!JS_ValueToBoolean(cx, v, &b))
|
if (!JS_ValueToBoolean(cx, v, &b))
|
||||||
@ -755,7 +757,7 @@ ScriptedIndirectProxyHandler::~ScriptedIndirectProxyHandler()
|
|||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
ReturnedValueMustNotBePrimitive(JSContext *cx, JSObject *proxy, JSAtom *atom, const Value &v)
|
ReturnedValueMustNotBePrimitive(JSContext *cx, HandleObject proxy, JSAtom *atom, const Value &v)
|
||||||
{
|
{
|
||||||
if (v.isPrimitive()) {
|
if (v.isPrimitive()) {
|
||||||
JSAutoByteString bytes;
|
JSAutoByteString bytes;
|
||||||
@ -3094,7 +3096,10 @@ js::RenewProxyObject(JSContext *cx, JSObject *obj,
|
|||||||
JS_ASSERT(obj->getParent() == cx->global());
|
JS_ASSERT(obj->getParent() == cx->global());
|
||||||
JS_ASSERT(obj->getClass() == &ObjectProxyClass);
|
JS_ASSERT(obj->getClass() == &ObjectProxyClass);
|
||||||
JS_ASSERT(obj->getTaggedProto().isLazy());
|
JS_ASSERT(obj->getTaggedProto().isLazy());
|
||||||
|
#ifdef DEBUG
|
||||||
|
AutoSuppressGC suppressGC(cx);
|
||||||
JS_ASSERT(!handler->isOuterWindow());
|
JS_ASSERT(!handler->isOuterWindow());
|
||||||
|
#endif
|
||||||
|
|
||||||
obj->setSlot(JSSLOT_PROXY_HANDLER, PrivateValue(handler));
|
obj->setSlot(JSSLOT_PROXY_HANDLER, PrivateValue(handler));
|
||||||
obj->setCrossCompartmentSlot(JSSLOT_PROXY_PRIVATE, priv);
|
obj->setCrossCompartmentSlot(JSSLOT_PROXY_PRIVATE, priv);
|
||||||
|
Loading…
Reference in New Issue
Block a user