From 5d4e61e09f615b2f0138bf8c7be733b9fdb3d1e8 Mon Sep 17 00:00:00 2001 From: ComputerGuy <63362464+Ocean-OS@users.noreply.github.com> Date: Thu, 31 Jul 2025 01:50:13 -0700 Subject: [PATCH] fix: nullify `last_propagated_event` to avoid memory leak --- .changeset/purple-hairs-glow.md | 5 +++++ packages/svelte/src/internal/client/dom/elements/events.js | 2 ++ 2 files changed, 7 insertions(+) create mode 100644 .changeset/purple-hairs-glow.md diff --git a/.changeset/purple-hairs-glow.md b/.changeset/purple-hairs-glow.md new file mode 100644 index 0000000000..c2ba4ba7fb --- /dev/null +++ b/.changeset/purple-hairs-glow.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: nullify `last_propagated_event` to avoid memory leak diff --git a/packages/svelte/src/internal/client/dom/elements/events.js b/packages/svelte/src/internal/client/dom/elements/events.js index 19bd1cfa18..997cd71efa 100644 --- a/packages/svelte/src/internal/client/dom/elements/events.js +++ b/packages/svelte/src/internal/client/dom/elements/events.js @@ -146,6 +146,7 @@ export function delegate(events) { // If the event object is GCed too early, the expando __root property // set on the event object is lost, causing the event delegation // to process the event twice +/** @type {Event | null} */ let last_propagated_event = null; /** @@ -182,6 +183,7 @@ export function handle_event_propagation(event) { // chain in case someone manually dispatches the same event object again. // @ts-expect-error event.__root = handler_element; + last_propagated_event = null; return; }