[pypy-commit] pypy remove-remaining-smm: Integer unwrapping should be done with space.int_w(w_obj) instead of w_obj.intval, same for float. Thanks cfbolz for noticing.

Manuel Jacob noreply at buildbot.pypy.org
Mon Feb 24 15:30:55 CET 2014


Author: Manuel Jacob
Branch: remove-remaining-smm
Changeset: r69355:5f0f8311bd7e
Date: 2014-02-24 15:30 +0100
http://bitbucket.org/pypy/pypy/changeset/5f0f8311bd7e/

Log:	Integer unwrapping should be done with space.int_w(w_obj) instead of
	w_obj.intval, same for float. Thanks cfbolz for noticing.

diff --git a/pypy/objspace/std/complexobject.py b/pypy/objspace/std/complexobject.py
--- a/pypy/objspace/std/complexobject.py
+++ b/pypy/objspace/std/complexobject.py
@@ -278,12 +278,12 @@
         if isinstance(w_obj, W_ComplexObject):
             return w_obj
         if space.isinstance_w(w_obj, space.w_int):
-            return W_ComplexObject(w_obj.intval, 0.0)
+            return W_ComplexObject(space.int_w(w_obj), 0.0)
         if space.isinstance_w(w_obj, space.w_long):
             dval = w_obj.tofloat(space)
             return W_ComplexObject(dval, 0.0)
         if space.isinstance_w(w_obj, space.w_float):
-            return W_ComplexObject(w_obj.floatval, 0.0)
+            return W_ComplexObject(space.float_w(w_obj), 0.0)
 
     @staticmethod
     @unwrap_spec(w_real=WrappedDefault(0.0))
diff --git a/pypy/objspace/std/floatobject.py b/pypy/objspace/std/floatobject.py
--- a/pypy/objspace/std/floatobject.py
+++ b/pypy/objspace/std/floatobject.py
@@ -104,7 +104,7 @@
             return space.newbool(op(self.floatval, w_other.floatval))
         if space.isinstance_w(w_other, space.w_int):
             f1 = self.floatval
-            i2 = w_other.intval
+            i2 = space.int_w(w_other)
             f2 = float(i2)
             if LONG_BIT > 32 and int(f2) != i2:
                 res = do_compare_bigint(f1, rbigint.fromint(i2))
@@ -350,7 +350,7 @@
         if isinstance(w_obj, W_FloatObject):
             return w_obj
         if space.isinstance_w(w_obj, space.w_int):
-            return W_FloatObject(float(w_obj.intval))
+            return W_FloatObject(float(space.int_w(w_obj)))
         if space.isinstance_w(w_obj, space.w_long):
             return W_FloatObject(w_obj.tofloat(space))
 


More information about the pypy-commit mailing list