| ... | ... | @@ -1158,20 +1158,21 @@ pub const Reader = struct { |
| 1158 | 1158 | // end. |
| 1159 | 1159 | fallback: { |
| 1160 | 1160 | if (r.size_err == null and r.seek_err == null) break :fallback; |
| 1161 | | var trash_buffer: [std.atomic.cache_line]u8 = undefined; |
| 1161 | var trash_buffer: [128]u8 = undefined; |
| 1162 | 1162 | const trash = &trash_buffer; |
| 1163 | 1163 | if (is_windows) { |
| 1164 | 1164 | const n = windows.ReadFile(file.handle, trash, null) catch |err| { |
| 1165 | 1165 | r.err = err; |
| 1166 | 1166 | return error.ReadFailed; |
| 1167 | 1167 | }; |
| 1168 | if (n == 0) return error.EndOfStream; |
| 1168 | 1169 | r.pos = pos + n; |
| 1169 | 1170 | return n; |
| 1170 | 1171 | } |
| 1171 | 1172 | var iovecs: [max_buffers_len]std.posix.iovec = undefined; |
| 1172 | 1173 | var iovecs_i: usize = 0; |
| 1173 | 1174 | var remaining = @intFromEnum(limit); |
| 1174 | | while (remaining > 0 and iovecs_i >= iovecs.len) { |
| 1175 | while (remaining > 0 and iovecs_i < iovecs.len) { |
| 1175 | 1176 | iovecs[iovecs_i] = .{ .base = trash, .len = @min(trash.len, remaining) }; |
| 1176 | 1177 | remaining -= iovecs[iovecs_i].len; |
| 1177 | 1178 | iovecs_i += 1; |
| ... | ... | @@ -1180,6 +1181,7 @@ pub const Reader = struct { |
| 1180 | 1181 | r.err = err; |
| 1181 | 1182 | return error.ReadFailed; |
| 1182 | 1183 | }; |
| 1184 | if (n == 0) return error.EndOfStream; |
| 1183 | 1185 | r.pos = pos + n; |
| 1184 | 1186 | return n; |
| 1185 | 1187 | } |