diff --git a/src/broadcaster.zig b/src/broadcaster.zig index cebf279..ba0cbab 100644 --- a/src/broadcaster.zig +++ b/src/broadcaster.zig @@ -534,10 +534,10 @@ pub const Broadcaster = struct { while (i < self.consumers.items.len) { const consumer = self.consumers.items[i]; if (!consumer.alive.load(.acquire)) { + // remove from broadcast list but don't destroy — + // Handler.close() → removeConsumer() owns cleanup _ = self.consumers.swapRemove(i); - consumer.shutdown(); _ = self.stats.consumer_count.fetchSub(1, .monotonic); - self.allocator.destroy(consumer); continue; } if (consumer.enqueue(frame)) {