[pypy-commit] pypy py3.6: Use a new _raise_error_always() function call for places that are missing loops
arigo
pypy.commits at gmail.com
Tue Jan 14 09:29:54 EST 2020
Author: Armin Rigo <arigo at tunes.org>
Branch: py3.6
Changeset: r98533:ce8858de481f
Date: 2020-01-14 15:29 +0100
http://bitbucket.org/pypy/pypy/changeset/ce8858de481f/
Log: Use a new _raise_error_always() function call for places that are
missing loops to retry. Maybe we should add these loops, too; I
didn't check
diff --git a/pypy/module/fcntl/interp_fcntl.py b/pypy/module/fcntl/interp_fcntl.py
--- a/pypy/module/fcntl/interp_fcntl.py
+++ b/pypy/module/fcntl/interp_fcntl.py
@@ -81,8 +81,14 @@
# wrap_oserror(..., eintr_retry=True) raises an OSError or returns None
# when appropriate
errno = rposix.get_saved_errno()
- return wrap_oserror(space, OSError(errno, funcname),
- exception_name = 'w_IOError', eintr_retry=True)
+ wrap_oserror(space, OSError(errno, funcname),
+ exception_name = 'w_IOError', eintr_retry=True)
+
+def _raise_error_always(space, funcname):
+ # this variant never returns normally, and doesn't retry if it gets EINTR.
+ errno = rposix.get_saved_errno()
+ raise wrap_oserror(space, OSError(errno, funcname),
+ exception_name = 'w_IOError', eintr_retry=False)
@unwrap_spec(op=int, w_arg=WrappedDefault(0))
def fcntl(space, w_fd, op, w_arg):
@@ -231,7 +237,7 @@
rffi.cast(rffi.VOIDP, ll_arg), len(arg))
rv = ioctl_str(fd, op, buf.raw)
if rv < 0:
- _raise_error_maybe(space, "ioctl")
+ _raise_error_always(space, "ioctl")
arg = rffi.charpsize2str(buf.raw, len(arg))
if mutate_flag != 0:
rwbuffer.setslice(0, arg)
@@ -259,7 +265,7 @@
rffi.cast(rffi.VOIDP, ll_arg), len(arg))
rv = ioctl_str(fd, op, buf.raw)
if rv < 0:
- _raise_error_maybe(space, "ioctl")
+ _raise_error_always(space, "ioctl")
arg = rffi.charpsize2str(buf.raw, len(arg))
return space.newbytes(arg)
finally:
@@ -269,5 +275,5 @@
intarg = rffi.cast(rffi.INT, intarg) # C long => C int
rv = ioctl_int(fd, op, intarg)
if rv < 0:
- _raise_error_maybe(space, "ioctl")
+ _raise_error_always(space, "ioctl")
return space.newint(rv)
More information about the pypy-commit
mailing list