Skip to content

Commit 1fcaf90

Browse files
committed
std.Io.Reader: make fillUnbuffered respect prexisting buffer
addresses only one usage pattern in #24608
1 parent 8414638 commit 1fcaf90

File tree

2 files changed

+2
-12
lines changed

2 files changed

+2
-12
lines changed

lib/std/Io/Reader.zig

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1055,15 +1055,6 @@ pub fn fill(r: *Reader, n: usize) Error!void {
10551055
/// Missing this optimization can result in wall-clock time for the most affected benchmarks
10561056
/// increasing by a factor of 5 or more.
10571057
fn fillUnbuffered(r: *Reader, n: usize) Error!void {
1058-
if (r.seek + n <= r.buffer.len) while (true) {
1059-
const end_cap = r.buffer[r.end..];
1060-
var writer: Writer = .fixed(end_cap);
1061-
r.end += r.vtable.stream(r, &writer, .limited(end_cap.len)) catch |err| switch (err) {
1062-
error.WriteFailed => unreachable,
1063-
else => |e| return e,
1064-
};
1065-
if (r.seek + n <= r.end) return;
1066-
};
10671058
try rebase(r, n);
10681059
var writer: Writer = .{
10691060
.buffer = r.buffer,

lib/std/compress/zstd/Decompress.zig

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,8 @@ fn rebase(r: *Reader, capacity: usize) Reader.RebaseError!void {
100100
const d: *Decompress = @alignCast(@fieldParentPtr("reader", r));
101101
assert(capacity <= r.buffer.len - d.window_len);
102102
assert(r.end + capacity > r.buffer.len);
103-
const buffered = r.buffer[0..r.end];
104-
const discard = buffered.len - d.window_len;
105-
const keep = buffered[discard..];
103+
const discard = r.end - d.window_len;
104+
const keep = r.buffer[discard..r.end];
106105
@memmove(r.buffer[0..keep.len], keep);
107106
r.end = keep.len;
108107
r.seek -= discard;

0 commit comments

Comments
 (0)