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 /lib | |
| parent | e4181972470c29f83480fdd6d5a465e1f8d14d7b (diff) | |
| download | zig-8023f3dcebff06cbf3563bdd09b07462ed43509f.tar.gz zig-8023f3dcebff06cbf3563bdd09b07462ed43509f.zip | |
fix not discarding delimiter
perhaps these APIs have the defaults backwards, eh?
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/std/Io/Reader.zig | 4 | ||||
| -rw-r--r-- | lib/std/debug/Pdb.zig | 7 |
2 files changed, 11 insertions, 0 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); |
