Fix JS_InstanceOf to work correctly again with a null obj, and to assert same-compartment only if called when an error might be reported. rs=luke

This commit is contained in:
Jeff Walden 2011-04-11 15:36:06 -07:00
Родитель aa882e4e32
Коммит 8187ba2baa
2 изменённых файлов: 8 добавлений и 5 удалений

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

@ -2932,8 +2932,13 @@ JS_PUBLIC_API(JSBool)
JS_InstanceOf(JSContext *cx, JSObject *obj, JSClass *clasp, jsval *argv)
{
CHECK_REQUEST(cx);
assertSameCompartment(cx, obj);
if (obj->getJSClass() != clasp) {
#ifdef DEBUG
if (argv) {
assertSameCompartment(cx, obj);
assertSameCompartment(cx, JSValueArray(argv - 2, 2));
}
#endif
if (!obj || obj->getJSClass() != clasp) {
if (argv)
ReportIncompatibleMethod(cx, Valueify(argv - 2), Valueify(clasp));
return false;

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

@ -2302,9 +2302,7 @@ static void
NPObjectMember_Trace(JSTracer *trc, JSObject *obj)
{
NPObjectMemberPrivate *memberPrivate =
(NPObjectMemberPrivate *)::JS_GetInstancePrivate(trc->context, obj,
&sNPObjectMemberClass,
nsnull);
(NPObjectMemberPrivate *)::JS_GetPrivate(trc->context, obj);
if (!memberPrivate)
return;