authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-04-10 23:37:08-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-04-10 23:37:08-04:00
log19e0ed5d3e303771e672f8cec42adb67a13fa3af
treedb96e9ca0f4c387e68455b288df3ba3917a44822
parent2ec1cec92d018d25f720c43a7586a12eafd2cbeb
parent9e8519b7a2c765b427f85f0aaa456256785eceb7

Merge branch 'fix879' of https://github.com/bnoordhuis/zig into bnoordhuis-fix879


1 files changed, 28 insertions(+), 2 deletions(-)

std/buf_map.zig+28-2
......@@ -31,8 +31,8 @@ pub const BufMap = struct {
3131 if (self.hash_map.get(key)) |entry| {
3232 const value_copy = try self.copy(value);
3333 errdefer self.free(value_copy);
34 _ = try self.hash_map.put(key, value_copy);
35 self.free(entry.value);
34 const old_value = ??(try self.hash_map.put(key, value_copy));
35 self.free(old_value);
3636 } else {
3737 const key_copy = try self.copy(key);
3838 errdefer self.free(key_copy);
......@@ -71,3 +71,29 @@ pub const BufMap = struct {
7171 return result;
7272 }
7373};
74
75const assert = @import("debug/index.zig").assert;
76const heap = @import("heap.zig");
77
78test "BufMap" {
79 var direct_allocator = heap.DirectAllocator.init();
80 defer direct_allocator.deinit();
81
82 var bufmap = BufMap.init(&direct_allocator.allocator);
83 defer bufmap.deinit();
84
85 try bufmap.set("x", "1");
86 assert(mem.eql(u8, ??bufmap.get("x"), "1"));
87 assert(1 == bufmap.count());
88
89 try bufmap.set("x", "2");
90 assert(mem.eql(u8, ??bufmap.get("x"), "2"));
91 assert(1 == bufmap.count());
92
93 try bufmap.set("x", "3");
94 assert(mem.eql(u8, ??bufmap.get("x"), "3"));
95 assert(1 == bufmap.count());
96
97 bufmap.delete("x");
98 assert(0 == bufmap.count());
99}