| author | |
| committer | |
| log | 043079d7655efefbec97d8338b7d7fa3f9fcbdb0 |
| tree | f8854e91cd66e0366401f3cd9f2878efe1ce0a28 |
| parent | a983f5b90f21c09ccc9e3fca1565b1b84b540307 |
2 files changed, 7 insertions(+), 4 deletions(-)
lib/std/io/Reader.zig+2-2| ... | ... | @@ -323,7 +323,7 @@ pub fn readVecLimit(r: *Reader, data: []const []u8, limit: Limit) Error!usize { |
| 323 | 323 | }, |
| 324 | 324 | .writer = .{ |
| 325 | 325 | .buffer = if (first.len >= r.buffer.len) first else r.buffer, |
| 326 | .vtable = &Writer.VectorWrapper.vtable, | |
| 326 | .vtable = Writer.VectorWrapper.vtable, | |
| 327 | 327 | }, |
| 328 | 328 | }; |
| 329 | 329 | var n = r.vtable.stream(r, &wrapper.writer, .limited(remaining)) catch |err| switch (err) { |
| ... | ... | @@ -599,7 +599,7 @@ pub fn readSliceShort(r: *Reader, buffer: []u8) ShortError!usize { |
| 599 | 599 | }, |
| 600 | 600 | .writer = .{ |
| 601 | 601 | .buffer = if (remaining.len >= r.buffer.len) remaining else r.buffer, |
| 602 | .vtable = &Writer.VectorWrapper.vtable, | |
| 602 | .vtable = Writer.VectorWrapper.vtable, | |
| 603 | 603 | }, |
| 604 | 604 | }; |
| 605 | 605 | const n = r.vtable.stream(r, &wrapper.writer, .unlimited) catch |err| switch (err) { |
lib/std/io/Writer.zig+5-2| ... | ... | @@ -392,11 +392,14 @@ pub const VectorWrapper = struct { |
| 392 | 392 | it: WritableVectorIterator, |
| 393 | 393 | /// Tracks whether the "writable vector" API was used. |
| 394 | 394 | used: bool = false, |
| 395 | pub const vtable: VTable = .{ .drain = fixedDrain }; | |
| 395 | pub const vtable: *const VTable = &unique_vtable_allocation; | |
| 396 | /// This is intended to be constant but it must be a unique address for | |
| 397 | /// `@fieldParentPtr` to work. | |
| 398 | var unique_vtable_allocation: VTable = .{ .drain = fixedDrain }; | |
| 396 | 399 | }; |
| 397 | 400 | |
| 398 | 401 | pub fn writableVectorIterator(w: *Writer) Error!WritableVectorIterator { |
| 399 | if (w.vtable == &VectorWrapper.vtable) { | |
| 402 | if (w.vtable == VectorWrapper.vtable) { | |
| 400 | 403 | const wrapper: *VectorWrapper = @fieldParentPtr("writer", w); |
| 401 | 404 | wrapper.used = true; |
| 402 | 405 | return wrapper.it; |