mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 06:13:07 +00:00
Fix bugs in Windows readVec implementations
This commit is contained in:
parent
51a2c0feaf
commit
9e9cb3ad6d
@ -1343,14 +1343,15 @@ pub const Reader = struct {
|
|||||||
if (is_windows) {
|
if (is_windows) {
|
||||||
// Unfortunately, `ReadFileScatter` cannot be used since it
|
// Unfortunately, `ReadFileScatter` cannot be used since it
|
||||||
// requires page alignment.
|
// requires page alignment.
|
||||||
assert(io_reader.seek == io_reader.end);
|
if (io_reader.seek == io_reader.end) {
|
||||||
io_reader.seek = 0;
|
io_reader.seek = 0;
|
||||||
io_reader.end = 0;
|
io_reader.end = 0;
|
||||||
|
}
|
||||||
const first = data[0];
|
const first = data[0];
|
||||||
if (first.len >= io_reader.buffer.len) {
|
if (first.len >= io_reader.buffer.len - io_reader.end) {
|
||||||
return readPositional(r, first);
|
return readPositional(r, first);
|
||||||
} else {
|
} else {
|
||||||
io_reader.end += try readPositional(r, io_reader.buffer);
|
io_reader.end += try readPositional(r, io_reader.buffer[io_reader.end..]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1391,14 +1392,15 @@ pub const Reader = struct {
|
|||||||
if (is_windows) {
|
if (is_windows) {
|
||||||
// Unfortunately, `ReadFileScatter` cannot be used since it
|
// Unfortunately, `ReadFileScatter` cannot be used since it
|
||||||
// requires page alignment.
|
// requires page alignment.
|
||||||
assert(io_reader.seek == io_reader.end);
|
if (io_reader.seek == io_reader.end) {
|
||||||
io_reader.seek = 0;
|
io_reader.seek = 0;
|
||||||
io_reader.end = 0;
|
io_reader.end = 0;
|
||||||
|
}
|
||||||
const first = data[0];
|
const first = data[0];
|
||||||
if (first.len >= io_reader.buffer.len) {
|
if (first.len >= io_reader.buffer.len - io_reader.end) {
|
||||||
return readStreaming(r, first);
|
return readPositional(r, first);
|
||||||
} else {
|
} else {
|
||||||
io_reader.end += try readStreaming(r, io_reader.buffer);
|
io_reader.end += try readPositional(r, io_reader.buffer[io_reader.end..]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1992,8 +1992,7 @@ pub const Stream = struct {
|
|||||||
};
|
};
|
||||||
if (n == 0) return error.EndOfStream;
|
if (n == 0) return error.EndOfStream;
|
||||||
if (n > data_size) {
|
if (n > data_size) {
|
||||||
io_r.seek = 0;
|
io_r.end += n - data_size;
|
||||||
io_r.end = n - data_size;
|
|
||||||
return data_size;
|
return data_size;
|
||||||
}
|
}
|
||||||
return n;
|
return n;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user