commit 482424e2b12cfcfe71280c826a2d31cb5df13a1a (tree)
parent 4fc6f631e044b5ddfff6c610f04f3619a1bbeb8d
Author: LemonBoy <thatlemon@gmail.com>
Date: Thu, 11 Mar 2021 23:05:46 +0100
std: Handle empty MultiArrayList in items()
Closes #8211
Diffstat:
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/lib/std/multi_array_list.zig b/lib/std/multi_array_list.zig
@@ -28,8 +28,11 @@ pub fn MultiArrayList(comptime S: type) type {
capacity: usize,
pub fn items(self: Slice, comptime field: Field) []FieldType(field) {
- const byte_ptr = self.ptrs[@enumToInt(field)];
const F = FieldType(field);
+ if (self.len == 0) {
+ return &[_]F{};
+ }
+ const byte_ptr = self.ptrs[@enumToInt(field)];
const casted_ptr = @ptrCast([*]F, @alignCast(@alignOf(F), byte_ptr));
return casted_ptr[0..self.len];
}
@@ -300,6 +303,8 @@ test "basic usage" {
var list = MultiArrayList(Foo){};
defer list.deinit(ally);
+ testing.expectEqual(@as(usize, 0), list.items(.a).len);
+
try list.ensureCapacity(ally, 2);
list.appendAssumeCapacity(.{