aboutsummaryrefslogtreecommitdiff
path: root/lib/std/buf_map.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2020-01-30 10:01:40 -0500
committerGitHub <noreply@github.com>2020-01-30 10:01:40 -0500
commit65b1a4953fd5b87f30260beb363d0e968dc8e291 (patch)
treeab01d1b6699d103b4b075807f47c136926404f92 /lib/std/buf_map.zig
parente3a383a661aaf9b43016358e2951ff9d792f240e (diff)
parent9c196efa2afe0e337ac0b16bd1138e89393f6106 (diff)
downloadzig-65b1a4953fd5b87f30260beb363d0e968dc8e291.tar.gz
zig-65b1a4953fd5b87f30260beb363d0e968dc8e291.zip
Merge pull request #4324 from fengb/testing-allocator
Remove debug.global_allocator in favor of testing.allocator
Diffstat (limited to 'lib/std/buf_map.zig')
-rw-r--r--lib/std/buf_map.zig7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/std/buf_map.zig b/lib/std/buf_map.zig
index 06f00608bb..e8bc735b57 100644
--- a/lib/std/buf_map.zig
+++ b/lib/std/buf_map.zig
@@ -43,9 +43,10 @@ pub const BufMap = struct {
pub fn set(self: *BufMap, key: []const u8, value: []const u8) !void {
const value_copy = try self.copy(value);
errdefer self.free(value_copy);
- // Avoid copying key if it already exists
const get_or_put = try self.hash_map.getOrPut(key);
- if (!get_or_put.found_existing) {
+ if (get_or_put.found_existing) {
+ self.free(get_or_put.kv.value);
+ } else {
get_or_put.kv.key = self.copy(key) catch |err| {
_ = self.hash_map.remove(key);
return err;
@@ -83,7 +84,7 @@ pub const BufMap = struct {
};
test "BufMap" {
- var bufmap = BufMap.init(std.heap.page_allocator);
+ var bufmap = BufMap.init(std.testing.allocator);
defer bufmap.deinit();
try bufmap.set("x", "1");