Author: Philip Jenvey <[email protected]>
Branch: stdlib-2.7.4
Changeset: r66175:7595a86ea213
Date: 2013-08-16 16:14 -0700
http://bitbucket.org/pypy/pypy/changeset/7595a86ea213/
Log: followup 1922d4a83a50: check underflow too
diff --git a/pypy/module/select/interp_select.py
b/pypy/module/select/interp_select.py
--- a/pypy/module/select/interp_select.py
+++ b/pypy/module/select/interp_select.py
@@ -22,9 +22,10 @@
@unwrap_spec(events=int)
def register(self, space, w_fd, events=defaultevents):
- if events > 32767:
- msg = "signed short integer is greater than maximum"
- raise OperationError(space.w_OverflowError, space.wrap(msg))
+ if not -32767 - 1 <= events <= 32767:
+ m = ("signed short integer is " +
+ "greater than maximum" if events > 0 else "less than minimum")
+ raise OperationError(space.w_OverflowError, space.wrap(m))
fd = space.c_filedescriptor_w(w_fd)
self.fddict[fd] = events
@@ -58,7 +59,7 @@
raise OperationError(space.w_ValueError,
space.wrap("math range error"))
- if timeout > 2147483647:
+ if not -2147483647 - 1 <= timeout <= 2147483647:
msg = "Python int too large to convert to C int"
raise OperationError(space.w_OverflowError, space.wrap(msg))
diff --git a/pypy/module/select/test/test_select.py
b/pypy/module/select/test/test_select.py
--- a/pypy/module/select/test/test_select.py
+++ b/pypy/module/select/test/test_select.py
@@ -223,8 +223,10 @@
pollster = select.poll()
raises(OverflowError, pollster.register, 0, 32768) # SHRT_MAX + 1
+ raises(OverflowError, pollster.register, 0, -32768 - 1)
raises(OverflowError, pollster.register, 0, 65535) # USHRT_MAX + 1
raises(OverflowError, pollster.poll, 2147483648) # INT_MAX + 1
+ raises(OverflowError, pollster.poll, -2147483648 - 1)
raises(OverflowError, pollster.poll, 4294967296) # UINT_MAX + 1
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit