From 92e3cfcbe9045fee8a462c8381031c044e6d0eab Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Thu, 13 Aug 2026 17:51:36 +0200 Subject: [PATCH] fix errdefer path on singleflight --- src/network/SingleFlight.zig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/network/SingleFlight.zig b/src/network/SingleFlight.zig index d5f15043b..5beb92a34 100644 --- a/src/network/SingleFlight.zig +++ b/src/network/SingleFlight.zig @@ -42,22 +42,22 @@ pub const EnterResult = enum { initial, queued }; pub fn enter(self: *SingleFlight, key: []const u8, transfer: *Transfer, reason: Transfer.ParkedBy) !EnterResult { const gop = try self.pending.getOrPut(self.allocator, key); - errdefer _ = self.pending.remove(key); - if (gop.found_existing) { const waiting = gop.value_ptr; try waiting.append(self.allocator, transfer); transfer.park(reason); return .queued; } + errdefer _ = self.pending.remove(key); const owned_key = try self.allocator.dupe(u8, key); errdefer self.allocator.free(owned_key); - gop.key_ptr.* = owned_key; var waiting: std.ArrayList(*Transfer) = .empty; errdefer waiting.deinit(self.allocator); try waiting.append(self.allocator, transfer); + + gop.key_ptr.* = owned_key; gop.value_ptr.* = waiting; transfer.park(reason);