diff --git a/lib/OpenLayers/Events.js b/lib/OpenLayers/Events.js index 6b05ccbae5..4631b5c9d1 100644 --- a/lib/OpenLayers/Events.js +++ b/lib/OpenLayers/Events.js @@ -105,7 +105,9 @@ OpenLayers.Events.prototype = { obj = this.object; } var listeners = this.listeners[type]; - listeners.push( {obj: obj, func: func} ); + if (listeners != null) { + listeners.push( {obj: obj, func: func} ); + } } }, diff --git a/tests/test_Events.html b/tests/test_Events.html index 504fff2d3a..bb213b7f05 100644 --- a/tests/test_Events.html +++ b/tests/test_Events.html @@ -41,7 +41,7 @@ function test_02_Events_register_unregister(t) { - t.plan( 13 ); + t.plan( 14 ); var mapDiv = $('map'); var obj = {result: 0}; @@ -78,6 +78,9 @@ var listenerList = events.listeners["doThingA"]; t.eq( listenerList.length, 3, "register correctly does not append null callback to event.listeners[doThingA] even when obj passed in is null" ); + events.register( "chicken", obj, func); + t.ok( events.listeners["chicken"] == null, "register() does nothing on attempt to register un-enabled event"); + events.unregister("doThingA", obj, null); var listenerList = events.listeners["doThingA"]; t.eq( listenerList.length, 3, "trying to unregister a null callback does nothing -- but doesnt crash :-)" );