From b5c9b4be1466f7686879fd7d6be04080e30ff7e2 Mon Sep 17 00:00:00 2001 From: "brendan%mozilla.org" Date: Sat, 16 Feb 2008 06:53:32 +0000 Subject: [PATCH] Don't lock non-native objects (417819, r=mrbkap). git-svn-id: svn://10.0.0.236/trunk@245818 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/js/src/jsapi.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/mozilla/js/src/jsapi.c b/mozilla/js/src/jsapi.c index c444c636e3a..c6eea7c1e7b 100644 --- a/mozilla/js/src/jsapi.c +++ b/mozilla/js/src/jsapi.c @@ -2841,16 +2841,19 @@ JS_SetPrototype(JSContext *cx, JSObject *obj, JSObject *proto) */ if (obj->map->ops->setProto) return obj->map->ops->setProto(cx, obj, JSSLOT_PROTO, proto); - OBJ_SET_PROTO(cx, obj, proto); #else - JS_LOCK_OBJ(cx, obj); - if (OBJ_IS_NATIVE(obj) && !js_GetMutableScope(cx, obj)) { + if (OBJ_IS_NATIVE(obj)) { + JS_LOCK_OBJ(cx, obj); + if (!js_GetMutableScope(cx, obj)) { + JS_UNLOCK_OBJ(cx, obj); + return JS_FALSE; + } + LOCKED_OBJ_SET_PROTO(obj, proto); JS_UNLOCK_OBJ(cx, obj); - return JS_FALSE; + return JS_TRUE; } - LOCKED_OBJ_SET_PROTO(obj, proto); - JS_UNLOCK_OBJ(cx, obj); #endif + OBJ_SET_PROTO(cx, obj, proto); return JS_TRUE; }