From 0280cf79a71cf2bf710d57e921d61184aa1b2dfd Mon Sep 17 00:00:00 2001 From: Tim Peters Date: Tue, 11 Sep 2001 21:53:35 +0000 Subject: [PATCH] More bug 460020: when F is a subclass of float, disable the unary plus optimization (+F(whatever)). --- Lib/test/test_descr.py | 1 + Objects/floatobject.c | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py index e89f6425b9..a50785f58a 100644 --- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -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 diff --git a/Objects/floatobject.c b/Objects/floatobject.c index d606547841..880eb0e1e0 100644 --- a/Objects/floatobject.c +++ b/Objects/floatobject.c @@ -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 * -- 2.50.1