From 106b9163c2bc7c5ba0950b094fbba0db4b4e7681 Mon Sep 17 00:00:00 2001 From: Kris Maglione Date: Sun, 3 Oct 2010 20:06:45 -0400 Subject: [PATCH] Fix some property completion edge cases with wrapped natives. --- common/modules/base.jsm | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/common/modules/base.jsm b/common/modules/base.jsm index 72cfa994..14bf7520 100644 --- a/common/modules/base.jsm +++ b/common/modules/base.jsm @@ -181,12 +181,18 @@ function debuggerProperties(obj) { * @default false * @returns {Generator} */ +function prototype(obj) + obj.__proto__ || Object.getPrototypeOf(obj) || + XPCNativeWrapper.unwrap(obj).__proto__ || + Object.getPrototypeOf(XPCNativeWrapper.unwrap(obj)); function properties(obj, prototypes, debugger_) { let orig = obj; let seen = {}; - for (; obj; obj = prototypes && obj.__proto__) { + + for (; obj; obj = prototypes && prototype(obj)) { try { - var iter = (!debugger_ || !services.get("debugger").isOn) && values(Object.getOwnPropertyNames(obj)); + if (!debugger_ || !services.get("debugger").isOn) + var iter = values(Object.getOwnPropertyNames(obj)); } catch (e) {} if (!iter)