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 {...@@ -39,6 +39,7 @@ pub const BufMap = struct {
39 const get_or_put = try self.hash_map.getOrPut(key);39 const get_or_put = try self.hash_map.getOrPut(key);
40 if (get_or_put.found_existing) {40 if (get_or_put.found_existing) {
41 self.free(get_or_put.entry.key);41 self.free(get_or_put.entry.key);
42 self.free(get_or_put.entry.value);
42 get_or_put.entry.key = key;43 get_or_put.entry.key = key;
43 }44 }
44 get_or_put.entry.value = value;45 get_or_put.entry.value = value;
...@@ -88,7 +89,8 @@ pub const BufMap = struct {...@@ -88,7 +89,8 @@ pub const BufMap = struct {
88};89};
8990
90test "BufMap" {91test "BufMap" {
91 var bufmap = BufMap.init(std.testing.allocator);92 const allocator = std.testing.allocator;
93 var bufmap = BufMap.init(allocator);
92 defer bufmap.deinit();94 defer bufmap.deinit();
9395
94 try bufmap.set("x", "1");96 try bufmap.set("x", "1");
...@@ -105,4 +107,7 @@ test "BufMap" {...@@ -105,4 +107,7 @@ test "BufMap" {
105107
106 bufmap.delete("x");108 bufmap.delete("x");
107 testing.expect(0 == bufmap.count());109 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"));
108}113}