From e227da7d586b4b8f99e0ce342632fc54e8f9c027 Mon Sep 17 00:00:00 2001 From: orig <48911144+origranot@users.noreply.github.com> Date: Sun, 15 Dec 2024 19:53:40 +0200 Subject: [PATCH 1/3] events: fix undefined passes to arrayClone Fixes: https://github.com/nodejs/node/issues/56263 --- lib/events.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/events.js b/lib/events.js index e8fd3bbb79259e..ed447ce704cb6f 100644 --- a/lib/events.js +++ b/lib/events.js @@ -784,6 +784,8 @@ function _listeners(target, type, unwrap) { return []; const evlistener = target._events[type]; + if (evlistener === undefined) + return []; if (typeof evlistener === 'function') return unwrap ? [evlistener.listener || evlistener] : [evlistener]; From 8e613476bd5aa1e33a2d5caf602d0c9146daf302 Mon Sep 17 00:00:00 2001 From: origranot Date: Mon, 16 Dec 2024 00:47:24 +0200 Subject: [PATCH 2/3] test: add a test case --- test/parallel/test-event-emitter-listeners.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/parallel/test-event-emitter-listeners.js b/test/parallel/test-event-emitter-listeners.js index eb1da829c95f21..5e6b2e3f066c2e 100644 --- a/test/parallel/test-event-emitter-listeners.js +++ b/test/parallel/test-event-emitter-listeners.js @@ -86,6 +86,11 @@ function listener4() { assert.deepStrictEqual(ee.listeners('foo'), []); } +{ + const ee = new events.EventEmitter(); + assert.deepStrictEqual(ee.listeners(), []) +} + { class TestStream extends events.EventEmitter {} const s = new TestStream(); From 6b9313788eeca547242690d22b056db48e44a437 Mon Sep 17 00:00:00 2001 From: origranot Date: Mon, 16 Dec 2024 09:26:44 +0200 Subject: [PATCH 3/3] fix: linting issue --- test/parallel/test-event-emitter-listeners.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/parallel/test-event-emitter-listeners.js b/test/parallel/test-event-emitter-listeners.js index 5e6b2e3f066c2e..4a08ad34c273cd 100644 --- a/test/parallel/test-event-emitter-listeners.js +++ b/test/parallel/test-event-emitter-listeners.js @@ -88,7 +88,7 @@ function listener4() { { const ee = new events.EventEmitter(); - assert.deepStrictEqual(ee.listeners(), []) + assert.deepStrictEqual(ee.listeners(), []); } {