From 1b8d4e48675f1353ef6b617213013d84f2860194 Mon Sep 17 00:00:00 2001 From: James M Snell Date: Mon, 29 Nov 2021 08:08:40 -0800 Subject: [PATCH] events: propagate weak option for kNewListener MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: James M Snell PR-URL: https://github.com/nodejs/node/pull/40899 Reviewed-By: Michaƫl Zasso Reviewed-By: Matteo Collina --- lib/internal/event_target.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/internal/event_target.js b/lib/internal/event_target.js index ddab605c8a3c6a..e962c8b02399f4 100644 --- a/lib/internal/event_target.js +++ b/lib/internal/event_target.js @@ -371,7 +371,7 @@ class EventTarget { initEventTarget(this); } - [kNewListener](size, type, listener, once, capture, passive) { + [kNewListener](size, type, listener, once, capture, passive, weak) { if (this[kMaxEventTargetListeners] > 0 && size > this[kMaxEventTargetListeners] && !this[kMaxEventTargetListenersWarned]) { @@ -440,7 +440,14 @@ class EventTarget { // This is the first handler in our linked list. new Listener(root, listener, once, capture, passive, isNodeStyleListener, weak); - this[kNewListener](root.size, type, listener, once, capture, passive); + this[kNewListener]( + root.size, + type, + listener, + once, + capture, + passive, + weak); this[kEvents].set(type, root); return; } @@ -461,7 +468,7 @@ class EventTarget { new Listener(previous, listener, once, capture, passive, isNodeStyleListener, weak); root.size++; - this[kNewListener](root.size, type, listener, once, capture, passive); + this[kNewListener](root.size, type, listener, once, capture, passive, weak); } removeEventListener(type, listener, options = {}) { @@ -811,7 +818,7 @@ function defineEventHandler(emitter, name) { if (typeof wrappedHandler.handler === 'function') { this[kEvents].get(name).size++; const size = this[kEvents].get(name).size; - this[kNewListener](size, name, value, false, false, false); + this[kNewListener](size, name, value, false, false, false, false); } } else { wrappedHandler = makeEventHandler(value);