From 7f85b929d8610d6f474e3d960776207a60c2577c Mon Sep 17 00:00:00 2001 From: David A Kondrad Date: Fri, 24 Jan 2020 16:58:56 -0500 Subject: [PATCH] internal: scheduler: fix usage of seen_callbacks The set that was added to block infinite loops wasn't actually doing anything. Lift the declaration outside of the function and clear it at the end. --- src/runtime/internal/scheduler.ts | 7 ++++--- .../samples/lifecycle-onmount-infinite-loop/Child.svelte | 2 +- .../samples/lifecycle-onmount-infinite-loop/main.svelte | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/runtime/internal/scheduler.ts b/src/runtime/internal/scheduler.ts index 04c1264ab1..1ce255b217 100644 --- a/src/runtime/internal/scheduler.ts +++ b/src/runtime/internal/scheduler.ts @@ -31,8 +31,8 @@ export function add_flush_callback(fn) { flush_callbacks.push(fn); } +const seen_callbacks = new Set(); export function flush() { - const seen_callbacks = new Set(); do { // first, call beforeUpdate functions @@ -52,10 +52,10 @@ export function flush() { const callback = render_callbacks[i]; if (!seen_callbacks.has(callback)) { - callback(); - // ...so guard against infinite loops seen_callbacks.add(callback); + + callback(); } } @@ -67,6 +67,7 @@ export function flush() { } update_scheduled = false; + seen_callbacks.clear(); } function update($$) { diff --git a/test/runtime/samples/lifecycle-onmount-infinite-loop/Child.svelte b/test/runtime/samples/lifecycle-onmount-infinite-loop/Child.svelte index c1a538c62a..1772cb6513 100644 --- a/test/runtime/samples/lifecycle-onmount-infinite-loop/Child.svelte +++ b/test/runtime/samples/lifecycle-onmount-infinite-loop/Child.svelte @@ -1 +1 @@ -Child \ No newline at end of file +Child diff --git a/test/runtime/samples/lifecycle-onmount-infinite-loop/main.svelte b/test/runtime/samples/lifecycle-onmount-infinite-loop/main.svelte index ba2da663d6..293e37d4f1 100644 --- a/test/runtime/samples/lifecycle-onmount-infinite-loop/main.svelte +++ b/test/runtime/samples/lifecycle-onmount-infinite-loop/main.svelte @@ -13,4 +13,4 @@ }); -
\ No newline at end of file +