From aca404f7e872d0fca51090e8855d5cbeebc99227 Mon Sep 17 00:00:00 2001 From: Steven Orvell Date: Tue, 10 Nov 2015 15:15:04 -0800 Subject: [PATCH] For correctness, bind listeners must use a property's current value rather than its passed value. --- src/lib/bind/accessors.html | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/lib/bind/accessors.html b/src/lib/bind/accessors.html index 679ffae269..66175deae6 100644 --- a/src/lib/bind/accessors.html +++ b/src/lib/bind/accessors.html @@ -219,7 +219,12 @@ if (targetPath) { this._notifyPath(this._fixPath(path, property, targetPath), value); } else { - value = value !== undefined ? value : target[property]; + // TODO(sorvell): even though we have a `value` argument, we *must* + // lookup the current value of the property. Multiple listeners and + // queued events during configuration can theoretically lead to + // divergence of the passed value from the current value, but we + // really need to track down a specific case where this happens. + value = target[property]; if (!isStructured) { this[path] = value; } else {