bpo-41687: Fix error handling in Solaris sendfile implementation (GH-22128)

I just realized that my recent PR with sendfile on Solaris ([PR 22040](https://github.com/python/cpython/pull/22040)) has broken error handling.

Sorry for that, this simple followup fixes that.

Automerge-Triggered-By: @1st1
(cherry picked from commit fa8c9e7010)

Co-authored-by: Jakub Kulík <Kulikjak@gmail.com>
This commit is contained in:
Miss Islington (bot) 2020-09-16 05:25:09 -07:00 committed by GitHub
parent 7e356f17e4
commit 6a39888c2c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 2 additions and 3 deletions

View File

@ -9456,14 +9456,13 @@ done:
#if defined(__sun) && defined(__SVR4)
// On Solaris, sendfile raises EINVAL rather than returning 0
// when the offset is equal or bigger than the in_fd size.
int res;
struct stat st;
do {
Py_BEGIN_ALLOW_THREADS
res = fstat(in_fd, &st);
ret = fstat(in_fd, &st);
Py_END_ALLOW_THREADS
} while (res != 0 && errno == EINTR && !(async_err = PyErr_CheckSignals()));
} while (ret != 0 && errno == EINTR && !(async_err = PyErr_CheckSignals()));
if (ret < 0)
return (!async_err) ? posix_error() : NULL;