diff --git a/src/file/array.zig b/src/file/array.zig index 11faace..ea36a43 100644 --- a/src/file/array.zig +++ b/src/file/array.zig @@ -68,17 +68,20 @@ fn pop(allocator: std.mem.Allocator, input: *zid.Data) !void { } } -fn clear(allocator: std.mem.Allocator, input: *zid.Data) void { +fn clear(allocator: std.mem.Allocator, input: *zid.Data) !void { var updated_array = std.ArrayList(u8).init(allocator); errdefer updated_array.deinit(); + const new_len: u64 = 0; + try updated_array.appendSlice(std.mem.asBytes(&new_len)); + switch (input.*) { - .IntArray => input.*.IntArray = zid.allocEncodArray.Empty(), - .FloatArray => input.*.FloatArray = zid.allocEncodArray.Empty(), - .UnixArray => input.*.UnixArray = zid.allocEncodArray.Empty(), - .UUIDArray => input.*.UUIDArray = zid.allocEncodArray.Empty(), - .BoolArray => input.*.BoolArray = zid.allocEncodArray.Empty(), - .StrArray => input.*.StrArray = zid.allocEncodArray.Empty(), + .IntArray => input.*.IntArray = try updated_array.toOwnedSlice(), + .FloatArray => input.*.FloatArray = try updated_array.toOwnedSlice(), + .UnixArray => input.*.UnixArray = try updated_array.toOwnedSlice(), + .UUIDArray => input.*.UUIDArray = try updated_array.toOwnedSlice(), + .BoolArray => input.*.BoolArray = try updated_array.toOwnedSlice(), + .StrArray => input.*.StrArray = try updated_array.toOwnedSlice(), else => unreachable, } } diff --git a/src/ziql/parts/newData.zig b/src/ziql/parts/newData.zig index 4f7e203..307f59e 100644 --- a/src/ziql/parts/newData.zig +++ b/src/ziql/parts/newData.zig @@ -119,7 +119,7 @@ pub fn parseNewData( .keyword_clear => if (for_update) { map.put( member_name, - ValueOrArray{ .array = .{ .condition = .pop, .data = null } }, + ValueOrArray{ .array = .{ .condition = .clear, .data = null } }, ) catch return ZipponError.MemoryError; state = .expect_comma_OR_end; } else return printError(