zig/lib/std/Io
Ryan Liptak 328ae41468 Reader.peekDelimiterInclusive: Fix handling of stream implementations that return 0
Previously, the logic in peekDelimiterInclusive (when the delimiter was not found in the existing buffer) used the `n` returned from `r.vtable.stream` as the length of the slice to check, but it's valid for `vtable.stream` implementations to return 0 if they wrote to the buffer instead of `w`. In that scenario, the `indexOfScalarPos` would be given a 0-length slice so it would never be able to find the delimiter.

This commit changes the logic to assume that `r.vtable.stream` can both:
- return 0, and
- modify seek/end (i.e. it's also valid for a `vtable.stream` implementation to rebase)

Also introduces `std.testing.ReaderIndirect` which helps in being able to test against Reader implementations that return 0 from `stream`/`readVec`

Fixes #25428
2025-10-08 16:42:55 -07:00
..
Reader Revert "Fix infinite loop in Reader.Limited" 2025-10-07 14:35:08 -07:00
Reader.zig Reader.peekDelimiterInclusive: Fix handling of stream implementations that return 0 2025-10-08 16:42:55 -07:00
test.zig std.Io: delete GenericReader 2025-08-29 17:14:26 -07:00
tty.zig std.Io: delete GenericReader 2025-08-29 17:14:26 -07:00
Writer.zig Merge pull request #25302 from ziglang/growCapacity 2025-09-21 04:55:39 -07:00