diff --git a/common/content/modes.js b/common/content/modes.js index 9ff71eb5..d4cd2739 100644 --- a/common/content/modes.js +++ b/common/content/modes.js @@ -329,10 +329,11 @@ var Modes = Module("modes", { { push: push }, push); for (let [id, { obj, prop, test }] in Iterator(this.boundProperties)) { - if (!obj.get()) + obj = obj.get(); + if (!obj) delete this.boundProperties[id]; else - this.topOfStack.saved[id] = { obj: obj.get(), prop: prop, value: obj.get()[prop], test: test }; + this.topOfStack.saved[id] = { obj: obj, prop: prop, value: obj[prop], test: test }; } } diff --git a/common/modules/overlay.jsm b/common/modules/overlay.jsm index ae55eacb..9d96f184 100644 --- a/common/modules/overlay.jsm +++ b/common/modules/overlay.jsm @@ -103,11 +103,12 @@ var Overlay = Module("Overlay", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReferen target = null; this.setData(doc, "listeners", listeners.filter(function (args) { - if (target == null || args[0].get() == target && args[1] == event && args[2].wrapped == callback && args[3] == capture) { - args[0].get().removeEventListener.apply(args[0].get(), args.slice(1)); + let elem = args[0].get(); + if (target == null || elem == target && args[1] == event && args[2].wrapped == callback && args[3] == capture) { + elem.removeEventListener.apply(elem, args.slice(1)); return false; } - return !args[0].get(); + return elem; })); }, diff --git a/common/modules/prefs.jsm b/common/modules/prefs.jsm index c3b53daa..e7a5b7a0 100644 --- a/common/modules/prefs.jsm +++ b/common/modules/prefs.jsm @@ -351,9 +351,10 @@ var Prefs = Module("prefs", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]) if (observers) { let value = this.get(data, false); this._observers[data] = observers.filter(function (callback) { - if (!callback.get()) + callback = callback.get(); + if (!callback) return false; - util.trapErrors(callback.get(), null, value); + util.trapErrors(callback, null, value); return true; }); }