From b8f09f773aa6f5133b9f756b872525a0f550ac17 Mon Sep 17 00:00:00 2001 From: Jonathan Marler Date: Sun, 29 Nov 2020 11:30:37 -0700 Subject: [PATCH] fix memory leak in BufMap --- lib/std/buf_map.zig | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/std/buf_map.zig b/lib/std/buf_map.zig index 0fb2156c4..3be724e10 100644 --- a/lib/std/buf_map.zig +++ b/lib/std/buf_map.zig @@ -39,6 +39,7 @@ pub const BufMap = struct { const get_or_put = try self.hash_map.getOrPut(key); if (get_or_put.found_existing) { self.free(get_or_put.entry.key); + self.free(get_or_put.entry.value); get_or_put.entry.key = key; } get_or_put.entry.value = value; @@ -88,7 +89,8 @@ pub const BufMap = struct { }; test "BufMap" { - var bufmap = BufMap.init(std.testing.allocator); + const allocator = std.testing.allocator; + var bufmap = BufMap.init(allocator); defer bufmap.deinit(); try bufmap.set("x", "1"); @@ -105,4 +107,7 @@ test "BufMap" { bufmap.delete("x"); testing.expect(0 == bufmap.count()); + + try bufmap.setMove(try allocator.dupe(u8, "k"), try allocator.dupe(u8, "v1")); + try bufmap.setMove(try allocator.dupe(u8, "k"), try allocator.dupe(u8, "v2")); }