authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-08-27 18:57:21-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-08-28 18:30:57-07:00
log8023f3dcebff06cbf3563bdd09b07462ed43509f
treedb8a18f4680311f879f93ee25fbf32adb438691c
parente4181972470c29f83480fdd6d5a465e1f8d14d7b

fix not discarding delimiter

perhaps these APIs have the defaults backwards, eh?

6 files changed, 35 insertions(+), 9 deletions(-)

lib/std/Io/Reader.zig+4
......@@ -877,6 +877,8 @@ pub fn peekDelimiterExclusive(r: *Reader, delimiter: u8) DelimiterError![]u8 {
877877/// Appends to `w` contents by reading from the stream until `delimiter` is
878878/// found. Does not write the delimiter itself.
879879///
880/// Does not discard the delimiter from the `Reader`.
881///
880882/// Returns number of bytes streamed, which may be zero, or error.EndOfStream
881883/// if the delimiter was not found.
882884///
......@@ -930,6 +932,8 @@ pub const StreamDelimiterLimitError = error{
930932/// Appends to `w` contents by reading from the stream until `delimiter` is found.
931933/// Does not write the delimiter itself.
932934///
935/// Does not discard the delimiter from the `Reader`.
936///
933937/// Returns number of bytes streamed, which may be zero. End of stream can be
934938/// detected by checking if the next byte in the stream is the delimiter.
935939///
lib/std/debug/Pdb.zig+7
......@@ -2,6 +2,7 @@ const std = @import("../std.zig");
22const File = std.fs.File;
33const Allocator = std.mem.Allocator;
44const pdb = std.pdb;
5const assert = std.debug.assert;
56
67const Pdb = @This();
78
......@@ -94,11 +95,15 @@ pub fn parseDbiStream(self: *Pdb) !void {
9495 var module_name: std.Io.Writer.Allocating = .init(gpa);
9596 defer module_name.deinit();
9697 this_record_len += try reader.streamDelimiterLimit(&module_name.writer, 0, .limited(1024));
98 assert(reader.buffered()[0] == 0); // TODO change streamDelimiterLimit API
99 reader.toss(1);
97100 this_record_len += 1;
98101
99102 var obj_file_name: std.Io.Writer.Allocating = .init(gpa);
100103 defer obj_file_name.deinit();
101104 this_record_len += try reader.streamDelimiterLimit(&obj_file_name.writer, 0, .limited(1024));
105 assert(reader.buffered()[0] == 0); // TODO change streamDelimiterLimit API
106 reader.toss(1);
102107 this_record_len += 1;
103108
104109 if (this_record_len % 4 != 0) {
......@@ -303,6 +308,8 @@ pub fn getLineNumberInfo(self: *Pdb, module: *Module, address: u64) !std.debug.S
303308 var source_file_name: std.Io.Writer.Allocating = .init(gpa);
304309 defer source_file_name.deinit();
305310 _ = try adapted_reader.new_interface.streamDelimiterLimit(&source_file_name.writer, 0, .limited(1024));
311 assert(adapted_reader.new_interface.buffered()[0] == 0); // TODO change streamDelimiterLimit API
312 adapted_reader.new_interface.toss(1);
306313 break :s try source_file_name.toOwnedSlice();
307314 };
308315 errdefer gpa.free(source_file_name);
src/Compilation.zig+10-9
......@@ -5893,15 +5893,16 @@ fn buildGlibcCrtFile(comp: *Compilation, crt_file: glibc.CrtFile, prog_node: std
58935893
58945894fn buildGlibcSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) void {
58955895 defer comp.link_task_queue.finishPrelinkItem(comp);
5896 if (glibc.buildSharedObjects(comp, prog_node)) |_| {
5897 // The job should no longer be queued up since it succeeded.
5898 comp.queued_jobs.glibc_shared_objects = false;
5899 } else |err| switch (err) {
5900 error.AlreadyReported => return,
5901 else => comp.lockAndSetMiscFailure(.glibc_shared_objects, "unable to build glibc shared objects: {s}", .{
5902 @errorName(err),
5903 }),
5904 }
5896 glibc.buildSharedObjects(comp, prog_node) catch unreachable;
5897 //if (glibc.buildSharedObjects(comp, prog_node)) |_| {
5898 // // The job should no longer be queued up since it succeeded.
5899 // comp.queued_jobs.glibc_shared_objects = false;
5900 //} else |err| switch (err) {
5901 // error.AlreadyReported => return,
5902 // else => comp.lockAndSetMiscFailure(.glibc_shared_objects, "unable to build glibc shared objects: {s}", .{
5903 // @errorName(err),
5904 // }),
5905 //}
59055906}
59065907
59075908fn buildFreeBSDCrtFile(comp: *Compilation, crt_file: freebsd.CrtFile, prog_node: std.Progress.Node) void {
src/libs/freebsd.zig+6
......@@ -548,6 +548,8 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye
548548 const sym_name = opt_symbol_name orelse n: {
549549 sym_name_buf.clearRetainingCapacity();
550550 _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0);
551 assert(inc_reader.buffered()[0] == 0); // TODO change streamDelimiter API
552 inc_reader.toss(1);
551553
552554 opt_symbol_name = sym_name_buf.written();
553555 versions.unsetAll();
......@@ -694,6 +696,8 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye
694696 const sym_name = opt_symbol_name orelse n: {
695697 sym_name_buf.clearRetainingCapacity();
696698 _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0);
699 assert(inc_reader.buffered()[0] == 0); // TODO change streamDelimiter API
700 inc_reader.toss(1);
697701
698702 opt_symbol_name = sym_name_buf.written();
699703 versions.unsetAll();
......@@ -830,6 +834,8 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye
830834 const sym_name = opt_symbol_name orelse n: {
831835 sym_name_buf.clearRetainingCapacity();
832836 _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0);
837 assert(inc_reader.buffered()[0] == 0); // TODO change streamDelimiter API
838 inc_reader.toss(1);
833839
834840 opt_symbol_name = sym_name_buf.written();
835841 versions.unsetAll();
src/libs/glibc.zig+4
......@@ -802,6 +802,8 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye
802802 const sym_name = opt_symbol_name orelse n: {
803803 sym_name_buf.clearRetainingCapacity();
804804 _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0);
805 assert(inc_reader.buffered()[0] == 0); // TODO change streamDelimiter API
806 inc_reader.toss(1);
805807
806808 opt_symbol_name = sym_name_buf.written();
807809 versions_buffer = undefined;
......@@ -974,6 +976,8 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye
974976 const sym_name = opt_symbol_name orelse n: {
975977 sym_name_buf.clearRetainingCapacity();
976978 _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0);
979 assert(inc_reader.buffered()[0] == 0); // TODO change streamDelimiter API
980 inc_reader.toss(1);
977981
978982 opt_symbol_name = sym_name_buf.written();
979983 versions_buffer = undefined;
src/libs/netbsd.zig+4
......@@ -477,6 +477,8 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye
477477 const sym_name = opt_symbol_name orelse n: {
478478 sym_name_buf.clearRetainingCapacity();
479479 _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0);
480 assert(inc_reader.buffered()[0] == 0); // TODO change streamDelimiter API
481 inc_reader.toss(1);
480482
481483 opt_symbol_name = sym_name_buf.written();
482484 chosen_ver_index = 255;
......@@ -552,6 +554,8 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye
552554 const sym_name = opt_symbol_name orelse n: {
553555 sym_name_buf.clearRetainingCapacity();
554556 _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0);
557 assert(inc_reader.buffered()[0] == 0); // TODO change streamDelimiter API
558 inc_reader.toss(1);
555559
556560 opt_symbol_name = sym_name_buf.written();
557561 chosen_ver_index = 255;