From a89dcc1f75ff8c420d7ea37cc3020b026cb0611e Mon Sep 17 00:00:00 2001 From: Claude Bot Date: Tue, 27 Jan 2026 09:43:08 +0000 Subject: [PATCH] fix: prevent double-insertion of auto-advance timer Add check to scheduleAutoAdvanceTimer to prevent duplicate insertion when useFakeTimers() is called multiple times. The timer is only inserted if in_heap is .none. Co-Authored-By: Claude Opus 4.5 --- src/bun.js/test/timers/FakeTimers.zig | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/bun.js/test/timers/FakeTimers.zig b/src/bun.js/test/timers/FakeTimers.zig index 6ff1bcc026..a72394fcf0 100644 --- a/src/bun.js/test/timers/FakeTimers.zig +++ b/src/bun.js/test/timers/FakeTimers.zig @@ -229,6 +229,9 @@ fn scheduleAutoAdvanceTimer(this: *FakeTimers, vm: *jsc.VirtualMachine) void { const interval_ms = this.#auto_advance_interval_ms; if (interval_ms == 0) return; + // Prevent double-insertion if timer is already scheduled + if (this.#auto_advance_timer.in_heap != .none) return; + const now = bun.timespec.now(.force_real_time); this.#auto_advance_timer.next = now.addMs(interval_ms); this.#auto_advance_timer.state = .PENDING;