mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2025-12-23 11:27:58 +01:00
Fix potential races.
This commit is contained in:
@@ -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 };
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}));
|
||||
},
|
||||
|
||||
|
||||
@@ -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;
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user