diff options
author | Tim Peters <tim.peters@gmail.com> | 2003-08-15 01:16:37 (GMT) |
---|---|---|
committer | Tim Peters <tim.peters@gmail.com> | 2003-08-15 01:16:37 (GMT) |
commit | 465fa3dac49e5bbbb7904c755ff999dd5362c83e (patch) | |
tree | 947000be70978b28bd786bee9876ca2b3e3fc36f | |
parent | 90b182c16c2e9ccf238dde897ff9434570f8da7b (diff) | |
download | cpython-465fa3dac49e5bbbb7904c755ff999dd5362c83e.zip cpython-465fa3dac49e5bbbb7904c755ff999dd5362c83e.tar.gz cpython-465fa3dac49e5bbbb7904c755ff999dd5362c83e.tar.bz2 |
complex_new(): This could leak when the argument was neither string nor
number. This accounts for the 2 refcount leaks per test_complex run
Michael Hudson discovered (I figured only I would have the stomach to
look for leaks in floating-point code <wink>).
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Objects/complexobject.c | 3 |
2 files changed, 6 insertions, 0 deletions
@@ -12,6 +12,9 @@ What's New in Python 2.4 alpha 1? Core and builtins ----------------- +- complex(obj) could leak a little memory if obj wasn't a string or + number. + - zip() with no arguments now returns an empty list instead of raising a TypeError exception. diff --git a/Objects/complexobject.c b/Objects/complexobject.c index 4367ff6..d50a6eb2 100644 --- a/Objects/complexobject.c +++ b/Objects/complexobject.c @@ -882,6 +882,9 @@ complex_new(PyTypeObject *type, PyObject *args, PyObject *kwds) ((i != NULL) && (nbi == NULL || nbi->nb_float == NULL))) { PyErr_SetString(PyExc_TypeError, "complex() argument must be a string or a number"); + if (own_r) { + Py_DECREF(r); + } return NULL; } if (PyComplex_Check(r)) { |