Skip to content

Commit 2633bce

Browse files
committed
fix: roll back w.end in Io.Writer.sendFileHeader on error
1 parent a0990b1 commit 2633bce

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

lib/std/Io/Writer.zig

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -911,11 +911,15 @@ pub fn sendFileHeader(
911911
file_reader: *File.Reader,
912912
limit: Limit,
913913
) FileError!usize {
914-
const new_end = w.end + header.len;
914+
const old_end = w.end;
915+
const new_end = old_end + header.len;
915916
if (new_end <= w.buffer.len) {
916917
@memcpy(w.buffer[w.end..][0..header.len], header);
917918
w.end = new_end;
918-
return header.len + try w.vtable.sendFile(w, file_reader, limit);
919+
return header.len + (w.vtable.sendFile(w, file_reader, limit) catch |err| {
920+
w.end = old_end;
921+
return err;
922+
});
919923
}
920924
const buffered_contents = limit.slice(file_reader.interface.buffered());
921925
const n = try w.vtable.drain(w, &.{ header, buffered_contents }, 1);

0 commit comments

Comments
 (0)