authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-12-18 18:24:55-08:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-01-15 15:11:35-08:00
log3cb00c5bcd3dec191bea0cbab9fcac77c0e3a910
tree9d3bf361362bd1c20dbf6277679acc2fca761025
parent91efc5c98bb32f3b1d42895362d5ae5a175a1345

std.ArrayHashMap: allow passing empty values array

in which case the values array is set to undefined

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

lib/std/array_hash_map.zig+4-1
...@@ -641,10 +641,13 @@ pub fn ArrayHashMapUnmanaged(...@@ -641,10 +641,13 @@ pub fn ArrayHashMapUnmanaged(
641 return self;641 return self;
642 }642 }
643643
644 /// An empty `value_list` may be passed, in which case the values array becomes `undefined`.
644 pub fn reinit(self: *Self, gpa: Allocator, key_list: []const K, value_list: []const V) Oom!void {645 pub fn reinit(self: *Self, gpa: Allocator, key_list: []const K, value_list: []const V) Oom!void {
645 try self.entries.resize(gpa, key_list.len);646 try self.entries.resize(gpa, key_list.len);
646 @memcpy(self.keys(), key_list);647 @memcpy(self.keys(), key_list);
647 if (@sizeOf(V) != 0) {648 if (value_list.len == 0) {
649 @memset(self.values(), undefined);
650 } else {
648 assert(key_list.len == value_list.len);651 assert(key_list.len == value_list.len);
649 @memcpy(self.values(), value_list);652 @memcpy(self.values(), value_list);
650 }653 }