aboutsummaryrefslogtreecommitdiff
path: root/lib/std/fs
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2025-08-13 22:16:08 -0700
committerAndrew Kelley <andrew@ziglang.org>2025-08-13 22:16:08 -0700
commit6bcdcf85c7a26f03926bdb35120901545dc19206 (patch)
treeaa97ba201e0a10c5083e64e1e42bd04350e7b03a /lib/std/fs
parent27d6614f81dfddcbd05b2a0b4afb8db83eaafb0b (diff)
downloadzig-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.zig10
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;