fix potential refleak in PyFloat_AsDouble (closes #23590)

This commit is contained in:
Benjamin Peterson 2015-03-06 09:08:44 -05:00
parent b5a23223f0
commit a915723dc7
2 changed files with 7 additions and 0 deletions

View File

@ -6,6 +6,7 @@ from test import support
import math
from math import isinf, isnan, copysign, ldexp
import operator
import time
import random, fractions
INF = float("inf")
@ -129,6 +130,11 @@ class GeneralFloatCases(unittest.TestCase):
self.assertRaises(TypeError, float, Foo4(42))
self.assertAlmostEqual(float(FooStr('8')), 9.)
class Foo5:
def __float__(self):
return ""
self.assertRaises(TypeError, time.sleep, Foo5())
def test_is_integer(self):
self.assertFalse((1.1).is_integer())
self.assertTrue((1.).is_integer())

View File

@ -220,6 +220,7 @@ PyFloat_AsDouble(PyObject *op)
if (fo == NULL)
return -1;
if (!PyFloat_Check(fo)) {
Py_DECREF(fo);
PyErr_SetString(PyExc_TypeError,
"nb_float should return float object");
return -1;