From 7f727449c47e029018f5b38c019ead051d7c5039 Mon Sep 17 00:00:00 2001 From: Ken van der Eerden Date: Fri, 22 Jan 2016 14:58:26 +0100 Subject: [PATCH] error prevention after calling off(true) and clearing all listeners, var listeners set in on() function is not cleared. This could cause errors when calling functions desired to be unsubscribed. --- src/util/pubsub.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/util/pubsub.js b/src/util/pubsub.js index 818a54b3..c5f3022f 100644 --- a/src/util/pubsub.js +++ b/src/util/pubsub.js @@ -164,8 +164,8 @@ return this; } - var listeners = this._topics[ topic ] - ,l = listeners && listeners.length + var l = this._topics[ topic ] && this._topics[ topic ].length + ,listeners ,handler ,e ,scratch = Physics.scratchpad() @@ -183,11 +183,12 @@ // reverse iterate so priorities work out correctly while ( l-- ){ - handler = listeners[ l ]; - handler( data, e ); + listeners = this._topics[ topic ]; + handler = listeners && listeners[ l ]; + handler && handler( data, e ); // if _one_ flag is set, the unsubscribe - if ( handler._one_ ){ + if ( handler && handler._one_ ){ listeners.splice( l, 1 ); } }