From b5ffc5680d348c07817a080a518f773a16611b1b Mon Sep 17 00:00:00 2001 From: Kris Maglione Date: Sun, 24 Mar 2013 11:39:42 -0700 Subject: [PATCH] Fix observer cleanup issue. --- common/modules/storage.jsm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/common/modules/storage.jsm b/common/modules/storage.jsm index 209068d5..166eafd3 100644 --- a/common/modules/storage.jsm +++ b/common/modules/storage.jsm @@ -276,10 +276,15 @@ var Storage = Module("Storage", { }, removeDeadObservers: function () { + function filter(o) { + if (!o.callback.get()) + return false; + let ref = o.ref && o.ref.get(); + return ref && !ref.closed && overlay.getData(ref, "storage-refs", null); + } + for (let [key, ary] in Iterator(this.observers)) { - this.observers[key] = ary = ary.filter(function (o) o.callback.get() - && (!o.ref || o.ref.get() - && overlay.getData(o.ref.get(), "storage-refs", null))); + this.observers[key] = ary = ary.filter(filter); if (!ary.length) delete this.observers[key]; }