Commit 3908d7de authored by Benjamin Peterson's avatar Benjamin Peterson

fix potential refleak in PyFloat_AsDouble (closes #23590)

parent 3c05585e
...@@ -8,6 +8,7 @@ import operator ...@@ -8,6 +8,7 @@ import operator
import random import random
import fractions import fractions
import sys import sys
import time
INF = float("inf") INF = float("inf")
NAN = float("nan") NAN = float("nan")
...@@ -164,6 +165,11 @@ class GeneralFloatCases(unittest.TestCase): ...@@ -164,6 +165,11 @@ class GeneralFloatCases(unittest.TestCase):
self.assertAlmostEqual(float(FooUnicode('8')), 9.) self.assertAlmostEqual(float(FooUnicode('8')), 9.)
self.assertAlmostEqual(float(FooStr('8')), 9.) self.assertAlmostEqual(float(FooStr('8')), 9.)
class Foo5:
def __float__(self):
return ""
self.assertRaises(TypeError, time.sleep, Foo5())
def test_is_integer(self): def test_is_integer(self):
self.assertFalse((1.1).is_integer()) self.assertFalse((1.1).is_integer())
self.assertTrue((1.).is_integer()) self.assertTrue((1.).is_integer())
......
...@@ -271,6 +271,7 @@ PyFloat_AsDouble(PyObject *op) ...@@ -271,6 +271,7 @@ PyFloat_AsDouble(PyObject *op)
if (fo == NULL) if (fo == NULL)
return -1; return -1;
if (!PyFloat_Check(fo)) { if (!PyFloat_Check(fo)) {
Py_DECREF(fo);
PyErr_SetString(PyExc_TypeError, PyErr_SetString(PyExc_TypeError,
"nb_float should return float object"); "nb_float should return float object");
return -1; return -1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment