diff --git a/kitty/fast-file-copy.c b/kitty/fast-file-copy.c index dec635286..15f0257fe 100644 --- a/kitty/fast-file-copy.c +++ b/kitty/fast-file-copy.c @@ -60,9 +60,9 @@ copy_with_sendfile(int infd, int outfd, off_t in_pos, size_t len, FastFileCopyBu off_t r = in_pos; ssize_t n = sendfile(outfd, infd, &r, len); if (n < 0) { - if (errno != EAGAIN) return false; + if (errno == EAGAIN) continue; if (errno == ENOSYS || errno == EPERM) return copy_with_buffer(infd, outfd, in_pos, len, fcb); - continue; + return false; } if (n == 0) { // happens if input file is truncated @@ -83,9 +83,9 @@ copy_with_file_range(int infd, int outfd, off_t in_pos, size_t len, FastFileCopy off64_t r = in_pos; ssize_t n = copy_file_range(infd, &r, outfd, NULL, len, 0); if (n < 0) { - if (errno != EAGAIN) return false; + if (errno == EAGAIN) continue; if (errno == ENOSYS || errno == EPERM) return copy_with_sendfile(infd, outfd, in_pos, len, fcb); - continue; + return false; } if (n == 0) { // happens if input file is truncated