diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2025-08-13 22:16:08 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2025-08-13 22:16:08 -0700 |
| commit | 6bcdcf85c7a26f03926bdb35120901545dc19206 (patch) | |
| tree | aa97ba201e0a10c5083e64e1e42bd04350e7b03a /lib/std/fs | |
| parent | 27d6614f81dfddcbd05b2a0b4afb8db83eaafb0b (diff) | |
| download | zig-6bcdcf85c7a26f03926bdb35120901545dc19206.tar.gz zig-6bcdcf85c7a26f03926bdb35120901545dc19206.zip | |
std.fs.File.Writer.sendFile: handle sendfile errors
fixes #24842
Diffstat (limited to 'lib/std/fs')
| -rw-r--r-- | lib/std/fs/File.zig | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/std/fs/File.zig b/lib/std/fs/File.zig index c698840f24..08dc00de8f 100644 --- a/lib/std/fs/File.zig +++ b/lib/std/fs/File.zig @@ -1823,6 +1823,11 @@ pub const Writer = struct { .NOBUFS => w.sendfile_err = error.SystemResources, else => |err| w.sendfile_err = posix.unexpectedErrno(err), } + if (w.sendfile_err != null) { + // Give calling code chance to observe the error before trying + // something else. + return 0; + } if (sbytes == 0) { file_reader.size = file_reader.pos; return error.EndOfStream; @@ -1879,6 +1884,11 @@ pub const Writer = struct { .PIPE => w.sendfile_err = error.BrokenPipe, else => |err| w.sendfile_err = posix.unexpectedErrno(err), } + if (w.sendfile_err != null) { + // Give calling code chance to observe the error before trying + // something else. + return 0; + } if (len == 0) { file_reader.size = file_reader.pos; return error.EndOfStream; |
