authorgravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2026-09-30 16:08:53-07:00
committergravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2026-09-30 16:19:42-07:00
log398f4cada30d4a73a95536ac526cad15e3769bc5
tree18b3c26b49bce405fb87e9ee7204dd388e24153b
parent92b739ac096dc65a243c5ddf51f94b43bf200650
signature Commit is signed but in an unrecognized format.

std.zon: fix silent merge conflict


1 files changed, 20 insertions(+), 10 deletions(-)

lib/std/zon/Serializer.zig+20-10
......@@ -476,23 +476,33 @@ test "fuzz string escaping" {
476476}
477477
478478fn fuzzString(options: StringOptions, smith: *std.testing.Smith) !void {
479 var arena: std.heap.ArenaAllocator = .init(std.testing.allocator);
480 defer arena.deinit();
481 const allocator = arena.allocator();
479 const gpa = std.testing.allocator;
482480
483 var allocating: Writer.Allocating = .init(allocator);
481 var arena_state: std.heap.ArenaAllocator = .init(gpa);
482 defer arena_state.deinit();
483 const arena = arena_state.allocator();
484
485 var allocating: Writer.Allocating = .init(gpa);
484486 defer allocating.deinit();
485487 var s: Serializer = .{ .writer = &allocating.writer };
486488
487489 var buf: [0x100]u8 = undefined;
488 const input_len = smith.slice(&buf);
489 const input = buf[0..input_len];
490 const input = buf[0..smith.slice(&buf)];
490491 try s.string(input, options);
491492
492 const encoded = try allocator.dupeSentinel(u8, allocating.written(), 0);
493 defer allocator.free(encoded);
494 const actual = try std.zon.parse.fromSliceAlloc([]const u8, allocator, encoded, null, .{});
495 defer std.zon.parse.free(allocator, actual);
493 var parse_diags: std.zon.parse.Diagnostics = undefined;
494 const actual = std.zon.parse.fromSlice([]const u8, .{
495 .gpa = gpa,
496 .arena = arena,
497 .source = try arena.dupeSentinel(u8, allocating.written(), 0),
498 .diagnostics = &parse_diags,
499 }) catch |err| switch (err) {
500 error.OutOfMemory => |e| return e,
501 error.ParseZon => |e| {
502 std.log.err("failed to parse serialized ZON: {f}", .{parse_diags.fmt("fuzz_input")});
503 return e;
504 },
505 };
496506 try std.testing.expectEqualSlices(u8, input, actual);
497507}
498508