diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2025-08-27 18:57:21 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2025-08-28 18:30:57 -0700 |
| commit | 8023f3dcebff06cbf3563bdd09b07462ed43509f (patch) | |
| tree | db8a18f4680311f879f93ee25fbf32adb438691c | |
| parent | e4181972470c29f83480fdd6d5a465e1f8d14d7b (diff) | |
| download | zig-8023f3dcebff06cbf3563bdd09b07462ed43509f.tar.gz zig-8023f3dcebff06cbf3563bdd09b07462ed43509f.zip | |
fix not discarding delimiter
perhaps these APIs have the defaults backwards, eh?
| -rw-r--r-- | lib/std/Io/Reader.zig | 4 | ||||
| -rw-r--r-- | lib/std/debug/Pdb.zig | 7 | ||||
| -rw-r--r-- | src/Compilation.zig | 19 | ||||
| -rw-r--r-- | src/libs/freebsd.zig | 6 | ||||
| -rw-r--r-- | src/libs/glibc.zig | 4 | ||||
| -rw-r--r-- | src/libs/netbsd.zig | 4 |
6 files changed, 35 insertions, 9 deletions
diff --git a/lib/std/Io/Reader.zig b/lib/std/Io/Reader.zig index 43ab4482c0..a1092b3980 100644 --- a/lib/std/Io/Reader.zig +++ b/lib/std/Io/Reader.zig @@ -877,6 +877,8 @@ pub fn peekDelimiterExclusive(r: *Reader, delimiter: u8) DelimiterError![]u8 { /// Appends to `w` contents by reading from the stream until `delimiter` is /// found. Does not write the delimiter itself. /// +/// Does not discard the delimiter from the `Reader`. +/// /// Returns number of bytes streamed, which may be zero, or error.EndOfStream /// if the delimiter was not found. /// @@ -930,6 +932,8 @@ pub const StreamDelimiterLimitError = error{ /// Appends to `w` contents by reading from the stream until `delimiter` is found. /// Does not write the delimiter itself. /// +/// Does not discard the delimiter from the `Reader`. +/// /// Returns number of bytes streamed, which may be zero. End of stream can be /// detected by checking if the next byte in the stream is the delimiter. /// diff --git a/lib/std/debug/Pdb.zig b/lib/std/debug/Pdb.zig index 4c5b61e343..808be42ccb 100644 --- a/lib/std/debug/Pdb.zig +++ b/lib/std/debug/Pdb.zig @@ -2,6 +2,7 @@ const std = @import("../std.zig"); const File = std.fs.File; const Allocator = std.mem.Allocator; const pdb = std.pdb; +const assert = std.debug.assert; const Pdb = @This(); @@ -94,11 +95,15 @@ pub fn parseDbiStream(self: *Pdb) !void { var module_name: std.Io.Writer.Allocating = .init(gpa); defer module_name.deinit(); this_record_len += try reader.streamDelimiterLimit(&module_name.writer, 0, .limited(1024)); + assert(reader.buffered()[0] == 0); // TODO change streamDelimiterLimit API + reader.toss(1); this_record_len += 1; var obj_file_name: std.Io.Writer.Allocating = .init(gpa); defer obj_file_name.deinit(); this_record_len += try reader.streamDelimiterLimit(&obj_file_name.writer, 0, .limited(1024)); + assert(reader.buffered()[0] == 0); // TODO change streamDelimiterLimit API + reader.toss(1); this_record_len += 1; if (this_record_len % 4 != 0) { @@ -303,6 +308,8 @@ pub fn getLineNumberInfo(self: *Pdb, module: *Module, address: u64) !std.debug.S var source_file_name: std.Io.Writer.Allocating = .init(gpa); defer source_file_name.deinit(); _ = try adapted_reader.new_interface.streamDelimiterLimit(&source_file_name.writer, 0, .limited(1024)); + assert(adapted_reader.new_interface.buffered()[0] == 0); // TODO change streamDelimiterLimit API + adapted_reader.new_interface.toss(1); break :s try source_file_name.toOwnedSlice(); }; errdefer gpa.free(source_file_name); diff --git a/src/Compilation.zig b/src/Compilation.zig index 4d5e7d9eef..6c917b79c4 100644 --- a/src/Compilation.zig +++ b/src/Compilation.zig @@ -5893,15 +5893,16 @@ fn buildGlibcCrtFile(comp: *Compilation, crt_file: glibc.CrtFile, prog_node: std fn buildGlibcSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) void { defer comp.link_task_queue.finishPrelinkItem(comp); - if (glibc.buildSharedObjects(comp, prog_node)) |_| { - // The job should no longer be queued up since it succeeded. - comp.queued_jobs.glibc_shared_objects = false; - } else |err| switch (err) { - error.AlreadyReported => return, - else => comp.lockAndSetMiscFailure(.glibc_shared_objects, "unable to build glibc shared objects: {s}", .{ - @errorName(err), - }), - } + glibc.buildSharedObjects(comp, prog_node) catch unreachable; + //if (glibc.buildSharedObjects(comp, prog_node)) |_| { + // // The job should no longer be queued up since it succeeded. + // comp.queued_jobs.glibc_shared_objects = false; + //} else |err| switch (err) { + // error.AlreadyReported => return, + // else => comp.lockAndSetMiscFailure(.glibc_shared_objects, "unable to build glibc shared objects: {s}", .{ + // @errorName(err), + // }), + //} } fn buildFreeBSDCrtFile(comp: *Compilation, crt_file: freebsd.CrtFile, prog_node: std.Progress.Node) void { diff --git a/src/libs/freebsd.zig b/src/libs/freebsd.zig index 60212480ac..2315964a50 100644 --- a/src/libs/freebsd.zig +++ b/src/libs/freebsd.zig @@ -548,6 +548,8 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye const sym_name = opt_symbol_name orelse n: { sym_name_buf.clearRetainingCapacity(); _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0); + assert(inc_reader.buffered()[0] == 0); // TODO change streamDelimiter API + inc_reader.toss(1); opt_symbol_name = sym_name_buf.written(); versions.unsetAll(); @@ -694,6 +696,8 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye const sym_name = opt_symbol_name orelse n: { sym_name_buf.clearRetainingCapacity(); _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0); + assert(inc_reader.buffered()[0] == 0); // TODO change streamDelimiter API + inc_reader.toss(1); opt_symbol_name = sym_name_buf.written(); versions.unsetAll(); @@ -830,6 +834,8 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye const sym_name = opt_symbol_name orelse n: { sym_name_buf.clearRetainingCapacity(); _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0); + assert(inc_reader.buffered()[0] == 0); // TODO change streamDelimiter API + inc_reader.toss(1); opt_symbol_name = sym_name_buf.written(); versions.unsetAll(); diff --git a/src/libs/glibc.zig b/src/libs/glibc.zig index 1f3302da83..4d3ee15bec 100644 --- a/src/libs/glibc.zig +++ b/src/libs/glibc.zig @@ -802,6 +802,8 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye const sym_name = opt_symbol_name orelse n: { sym_name_buf.clearRetainingCapacity(); _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0); + assert(inc_reader.buffered()[0] == 0); // TODO change streamDelimiter API + inc_reader.toss(1); opt_symbol_name = sym_name_buf.written(); versions_buffer = undefined; @@ -974,6 +976,8 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye const sym_name = opt_symbol_name orelse n: { sym_name_buf.clearRetainingCapacity(); _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0); + assert(inc_reader.buffered()[0] == 0); // TODO change streamDelimiter API + inc_reader.toss(1); opt_symbol_name = sym_name_buf.written(); versions_buffer = undefined; diff --git a/src/libs/netbsd.zig b/src/libs/netbsd.zig index f758f6de7e..e47bdce3af 100644 --- a/src/libs/netbsd.zig +++ b/src/libs/netbsd.zig @@ -477,6 +477,8 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye const sym_name = opt_symbol_name orelse n: { sym_name_buf.clearRetainingCapacity(); _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0); + assert(inc_reader.buffered()[0] == 0); // TODO change streamDelimiter API + inc_reader.toss(1); opt_symbol_name = sym_name_buf.written(); chosen_ver_index = 255; @@ -552,6 +554,8 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye const sym_name = opt_symbol_name orelse n: { sym_name_buf.clearRetainingCapacity(); _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0); + assert(inc_reader.buffered()[0] == 0); // TODO change streamDelimiter API + inc_reader.toss(1); opt_symbol_name = sym_name_buf.written(); chosen_ver_index = 255; |
