authorgravatar for johnnymarler@gmail.comJonathan Marler <johnnymarler@gmail.com> 2020-11-29 11:30:37-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-11-30 11:40:44-07:00
log8f346d9a4bd9c10a76bee0b33b09ac31eb5438fe
tree4d2e81b0119099201deb815300697c40f7748c93
parenta7c2cfe16d4267ea4e4719568c12a7a950374b0c

fix memory leak in BufMap


1 files changed, 6 insertions(+), 1 deletions(-)

lib/std/buf_map.zig+6-1
......@@ -39,6 +39,7 @@ pub const BufMap = struct {
3939 const get_or_put = try self.hash_map.getOrPut(key);
4040 if (get_or_put.found_existing) {
4141 self.free(get_or_put.entry.key);
42 self.free(get_or_put.entry.value);
4243 get_or_put.entry.key = key;
4344 }
4445 get_or_put.entry.value = value;
......@@ -88,7 +89,8 @@ pub const BufMap = struct {
8889};
8990
9091test "BufMap" {
91 var bufmap = BufMap.init(std.testing.allocator);
92 const allocator = std.testing.allocator;
93 var bufmap = BufMap.init(allocator);
9294 defer bufmap.deinit();
9395
9496 try bufmap.set("x", "1");
......@@ -105,4 +107,7 @@ test "BufMap" {
105107
106108 bufmap.delete("x");
107109 testing.expect(0 == bufmap.count());
110
111 try bufmap.setMove(try allocator.dupe(u8, "k"), try allocator.dupe(u8, "v1"));
112 try bufmap.setMove(try allocator.dupe(u8, "k"), try allocator.dupe(u8, "v2"));
108113}