From 1dd3db254befe214d73dbd8a244ef92a9adee9b6 Mon Sep 17 00:00:00 2001 From: Eddy Bruel Date: Tue, 21 Jun 2016 11:27:37 +0200 Subject: [PATCH] Bug 1271653 - DebuggerObject.getPrototypeOf should return a DebuggerObject;r=fitzgen --- js/src/vm/Debugger.cpp | 16 ++++++++++++---- js/src/vm/Debugger.h | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/js/src/vm/Debugger.cpp b/js/src/vm/Debugger.cpp index 918d3450d189..5e29517dfaea 100644 --- a/js/src/vm/Debugger.cpp +++ b/js/src/vm/Debugger.cpp @@ -7906,7 +7906,7 @@ DebuggerObject::protoGetter(JSContext* cx, unsigned argc, Value* vp) { THIS_DEBUGOBJECT(cx, argc, vp, "get proto", args, object) - RootedObject result(cx); + Rooted result(cx); if (!DebuggerObject::getPrototypeOf(cx, object, &result)) return false; @@ -9102,7 +9102,7 @@ DebuggerObject::isFrozen(JSContext* cx, Handle object, bool& re /* static */ bool DebuggerObject::getPrototypeOf(JSContext* cx, Handle object, - MutableHandleObject result) + MutableHandle result) { RootedObject referent(cx, object->referent()); Debugger* dbg = object->owner(); @@ -9114,8 +9114,16 @@ DebuggerObject::getPrototypeOf(JSContext* cx, Handle object, return false; } - result.set(proto); - return !result || dbg->wrapDebuggeeObject(cx, result); + if (!proto) { + result.set(nullptr); + return true; + } + + if (!dbg->wrapDebuggeeObject(cx, &proto)) + return false; + + result.set(&proto->as()); + return true; } /* static */ bool diff --git a/js/src/vm/Debugger.h b/js/src/vm/Debugger.h index e9a9146424be..3545b32588ee 100644 --- a/js/src/vm/Debugger.h +++ b/js/src/vm/Debugger.h @@ -1095,7 +1095,7 @@ class DebuggerObject : public NativeObject static MOZ_MUST_USE bool isSealed(JSContext* cx, Handle object, bool& result); static MOZ_MUST_USE bool isFrozen(JSContext* cx, Handle object, bool& result); static MOZ_MUST_USE bool getPrototypeOf(JSContext* cx, Handle object, - MutableHandleObject result); + MutableHandle result); static MOZ_MUST_USE bool getOwnPropertyNames(JSContext* cx, Handle object, MutableHandle result); static MOZ_MUST_USE bool getOwnPropertySymbols(JSContext* cx, Handle object,