commit 1141bfb21b82f8d3fc353e968a591f2ad9aaa571 (tree)
parent c4f81586f1212dfae8d647ad390676b1fda7bf89
Author: Andrew Kelley <andrew@ziglang.org>
Date: Tue, 3 Mar 2020 16:52:32 -0500
Darwin can return EBADF for sendfile on non-files
Diffstat:
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git 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,