zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 8f346d9a4bd9c10a76bee0b33b09ac31eb5438fe (tree)
parent a7c2cfe16d4267ea4e4719568c12a7a950374b0c
Author: Jonathan Marler <johnnymarler@gmail.com>
Date:   Sun, 29 Nov 2020 11:30:37 -0700

fix memory leak in BufMap

Diffstat:
Mlib/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 @@ -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")); }