1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-23 12:22:27 +01:00

Fix potential races.

This commit is contained in:
Kris Maglione
2014-02-23 12:20:22 -08:00
parent 9470e18566
commit c37656f731
3 changed files with 10 additions and 7 deletions

View File

@@ -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 };
}
}

View File

@@ -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;
}));
},

View File

@@ -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;
});
}