aboutsummaryrefslogtreecommitdiff
path: root/lib/std/os.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2020-03-03 16:52:32 -0500
committerAndrew Kelley <andrew@ziglang.org>2020-03-03 16:52:32 -0500
commit1141bfb21b82f8d3fc353e968a591f2ad9aaa571 (patch)
tree65cd5209cf69c03445f85bb244d15ca00bb51a32 /lib/std/os.zig
parentc4f81586f1212dfae8d647ad390676b1fda7bf89 (diff)
downloadzig-1141bfb21b82f8d3fc353e968a591f2ad9aaa571.tar.gz
zig-1141bfb21b82f8d3fc353e968a591f2ad9aaa571.zip
Darwin can return EBADF for sendfile on non-files
Diffstat (limited to 'lib/std/os.zig')
-rw-r--r--lib/std/os.zig6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/std/os.zig b/lib/std/os.zig
index b530ac94ab..90ad3e03a9 100644
--- a/lib/std/os.zig
+++ b/lib/std/os.zig
@@ -3818,12 +3818,14 @@ pub fn sendfile(
switch (err) {
0 => return amt,
- EBADF => unreachable, // Always a race condition.
EFAULT => unreachable, // Segmentation fault.
EINVAL => unreachable,
ENOTCONN => unreachable, // `out_fd` is an unconnected socket.
- ENOTSUP, ENOTSOCK, ENOSYS => break :sf,
+ // On macOS version 10.14.6, I observed Darwin return EBADF when
+ // using sendfile on a valid open file descriptor of a file
+ // system file.
+ ENOTSUP, ENOTSOCK, ENOSYS, EBADF => break :sf,
EINTR => if (amt != 0) return amt else continue,