[Python-checkins] cpython (2.7): 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/f31b91b6683a
changeset: 94881:f31b91b6683a
branch: 2.7
parent: 94876:e74e2ce81a1c
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
@@ -8,6 +8,7 @@
 import random
 import fractions
 import sys
+import time
 
 INF = float("inf")
 NAN = float("nan")
@@ -164,6 +165,11 @@
 self.assertAlmostEqual(float(FooUnicode('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):
 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
@@ -271,6 +271,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

AltStyle によって変換されたページ (->オリジナル) /