[pypy-svn] r28226 - pypy/dist/pypy/objspace/std
ale at codespeak.net
ale at codespeak.net
Sun Jun 4 11:41:33 CEST 2006
Author: ale
Date: Sun Jun 4 11:41:33 2006
New Revision: 28226
Modified:
pypy/dist/pypy/objspace/std/complextype.py
Log:
Check for overflow. (inspired by the applevel implementation of complex, thank you Carl)
Modified: pypy/dist/pypy/objspace/std/complextype.py
==============================================================================
--- pypy/dist/pypy/objspace/std/complextype.py (original)
+++ pypy/dist/pypy/objspace/std/complextype.py Sun Jun 4 11:41:33 2006
@@ -11,6 +11,9 @@
ERR_WRONG_SECOND = "complex() can't take second arg if first is a string"
ERR_MALFORMED = "complex() arg is a malformed string"
+OVERFLOWED_FLOAT = 1e200
+OVERFLOWED_FLOAT *= OVERFLOWED_FLOAT
+
complex_conjugate = StdObjSpaceMultiMethod('conjugate', 1)
register_all(vars(),globals())
@@ -148,6 +151,10 @@
except ParseStringError:
raise OperationError(space.w_ValueError, space.wrap(ERR_MALFORMED))
else:
+ #check for overflow
+ if abs(realval) == OVERFLOWED_FLOAT or abs(imagval) == OVERFLOWED_FLOAT:
+ raise OperationError(space.w_ValueError,space.wrap(
+ "complex() literal too large to convert"))
if space.is_w(w_complextype, space.w_complex):
# common case
w_obj = W_ComplexObject(realval, imagval)
More information about the Pypy-commit
mailing list