From 78312768ced984f8447a00ac650667136bb58995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A0=20Arrufat?= Date: Fri, 29 May 2026 07:55:54 +0200 Subject: [PATCH] storage: use getOrPut in Shed.getOrPut --- src/browser/webapi/storage/storage.zig | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/browser/webapi/storage/storage.zig b/src/browser/webapi/storage/storage.zig index 3261263b..d46a57dc 100644 --- a/src/browser/webapi/storage/storage.zig +++ b/src/browser/webapi/storage/storage.zig @@ -42,15 +42,16 @@ pub const Shed = struct { } pub fn getOrPut(self: *Shed, allocator: Allocator, origin: []const u8) !*Bucket { - if (self._origins.get(origin)) |existing| return existing; + const gop = try self._origins.getOrPut(allocator, origin); + if (gop.found_existing) return gop.value_ptr.*; + errdefer std.debug.assert(self._origins.remove(origin)); - const key_owned = try allocator.dupe(u8, origin); - errdefer allocator.free(key_owned); const bucket = try allocator.create(Bucket); errdefer allocator.destroy(bucket); bucket.* = .{}; - try self._origins.put(allocator, key_owned, bucket); + gop.key_ptr.* = try allocator.dupe(u8, origin); + gop.value_ptr.* = bucket; return bucket; } };