authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-03-03 16:52:32-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-03-03 16:52:32-05:00
log1141bfb21b82f8d3fc353e968a591f2ad9aaa571
tree65cd5209cf69c03445f85bb244d15ca00bb51a32
parentc4f81586f1212dfae8d647ad390676b1fda7bf89

Darwin can return EBADF for sendfile on non-files


1 files changed, 4 insertions(+), 2 deletions(-)

lib/std/os.zig+4-2
...@@ -3818,12 +3818,14 @@ pub fn sendfile(...@@ -3818,12 +3818,14 @@ pub fn sendfile(
3818 switch (err) {3818 switch (err) {
3819 0 => return amt,3819 0 => return amt,
38203820
3821 EBADF => unreachable, // Always a race condition.
3822 EFAULT => unreachable, // Segmentation fault.3821 EFAULT => unreachable, // Segmentation fault.
3823 EINVAL => unreachable,3822 EINVAL => unreachable,
3824 ENOTCONN => unreachable, // `out_fd` is an unconnected socket.3823 ENOTCONN => unreachable, // `out_fd` is an unconnected socket.
38253824
3826 ENOTSUP, ENOTSOCK, ENOSYS => break :sf,3825 // On macOS version 10.14.6, I observed Darwin return EBADF when
3826 // using sendfile on a valid open file descriptor of a file
3827 // system file.
3828 ENOTSUP, ENOTSOCK, ENOSYS, EBADF => break :sf,
38273829
3828 EINTR => if (amt != 0) return amt else continue,3830 EINTR => if (amt != 0) return amt else continue,
38293831