[Python-checkins] cpython (3.4): fix potential refleak in PyFloat_AsDouble (closes #23590)
benjamin.peterson
python-checkins at python.org
Fri Mar 6 15:10:50 CET 2015
https://hg.python.org/cpython/rev/30925a3b2324
changeset: 94880:30925a3b2324
branch: 3.4
parent: 94877:da3fe5fda078
user: Benjamin Peterson <benjamin at python.org>
date: Fri Mar 06 09:08:44 2015 -0500
summary:
fix potential refleak in PyFloat_AsDouble (closes #23590)
files:
Lib/test/test_float.py | 6 ++++++
Objects/floatobject.c | 1 +
2 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/Lib/test/test_float.py b/Lib/test/test_float.py
--- a/Lib/test/test_float.py
+++ b/Lib/test/test_float.py
@@ -6,6 +6,7 @@
import math
from math import isinf, isnan, copysign, ldexp
import operator
+import time
import random, fractions
INF = float("inf")
@@ -129,6 +130,11 @@
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())
diff --git a/Objects/floatobject.c b/Objects/floatobject.c
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -220,6 +220,7 @@
if (fo == NULL)
return -1;
if (!PyFloat_Check(fo)) {
+ Py_DECREF(fo);
PyErr_SetString(PyExc_TypeError,
"nb_float should return float object");
return -1;
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list