mirror of
https://github.com/ziglang/zig.git
synced 2025-12-24 07:03:11 +00:00
std.Io.Reader: don't set end to zero
because it may be used as a ring buffer
This commit is contained in:
parent
111305678c
commit
165cd87c12
@ -266,8 +266,7 @@ pub fn streamRemaining(r: *Reader, w: *Writer) StreamRemainingError!usize {
|
|||||||
/// number of bytes discarded.
|
/// number of bytes discarded.
|
||||||
pub fn discardRemaining(r: *Reader) ShortError!usize {
|
pub fn discardRemaining(r: *Reader) ShortError!usize {
|
||||||
var offset: usize = r.end - r.seek;
|
var offset: usize = r.end - r.seek;
|
||||||
r.seek = 0;
|
r.seek = r.end;
|
||||||
r.end = 0;
|
|
||||||
while (true) {
|
while (true) {
|
||||||
offset += r.vtable.discard(r, .unlimited) catch |err| switch (err) {
|
offset += r.vtable.discard(r, .unlimited) catch |err| switch (err) {
|
||||||
error.EndOfStream => return offset,
|
error.EndOfStream => return offset,
|
||||||
@ -526,8 +525,7 @@ pub fn toss(r: *Reader, n: usize) void {
|
|||||||
|
|
||||||
/// Equivalent to `toss(r.bufferedLen())`.
|
/// Equivalent to `toss(r.bufferedLen())`.
|
||||||
pub fn tossBuffered(r: *Reader) void {
|
pub fn tossBuffered(r: *Reader) void {
|
||||||
r.seek = 0;
|
r.seek = r.end;
|
||||||
r.end = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Equivalent to `peek` followed by `toss`.
|
/// Equivalent to `peek` followed by `toss`.
|
||||||
@ -614,8 +612,7 @@ pub fn discardShort(r: *Reader, n: usize) ShortError!usize {
|
|||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
var remaining = n - (r.end - r.seek);
|
var remaining = n - (r.end - r.seek);
|
||||||
r.end = 0;
|
r.seek = r.end;
|
||||||
r.seek = 0;
|
|
||||||
while (true) {
|
while (true) {
|
||||||
const discard_len = r.vtable.discard(r, .limited(remaining)) catch |err| switch (err) {
|
const discard_len = r.vtable.discard(r, .limited(remaining)) catch |err| switch (err) {
|
||||||
error.EndOfStream => return n - remaining,
|
error.EndOfStream => return n - remaining,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user