]> granicus.if.org Git - python/commitdiff
More bug 460020: when F is a subclass of float, disable the unary plus
authorTim Peters <tim.peters@gmail.com>
Tue, 11 Sep 2001 21:53:35 +0000 (21:53 +0000)
committerTim Peters <tim.peters@gmail.com>
Tue, 11 Sep 2001 21:53:35 +0000 (21:53 +0000)
optimization (+F(whatever)).

Lib/test/test_descr.py
Objects/floatobject.c

index e89f6425b9c258d775faba4337c650120e6d84d2..a50785f58a2848417f887b2b149b87400e2c5ebc 100644 (file)
@@ -1401,6 +1401,7 @@ def inherits():
     a = precfloat(12345)
     verify(float(a) == 12345.0)
     verify(float(a).__class__ is float)
+    verify((+a).__class__ is float)
 
     class madtuple(tuple):
         _rev = None
index d606547841c51cfd28488f3c260b30ce40e958cb..880eb0e1e032c9a0d0242edf9db2d48b6e666807 100644 (file)
@@ -553,8 +553,12 @@ float_neg(PyFloatObject *v)
 static PyObject *
 float_pos(PyFloatObject *v)
 {
-       Py_INCREF(v);
-       return (PyObject *)v;
+       if (PyFloat_CheckExact(v)) {
+               Py_INCREF(v);
+               return (PyObject *)v;
+       }
+       else
+               return PyFloat_FromDouble(v->ob_fval);
 }
 
 static PyObject *