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:
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"));
}