For correctness, bind listeners must use a property's current value rather than its passed value.

This commit is contained in:
Steven Orvell 2015-11-10 15:15:04 -08:00
parent b905a37654
commit aca404f7e8

View File

@ -219,7 +219,12 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
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 {