From: Tim Peters Date: Fri, 15 Aug 2003 01:16:37 +0000 (+0000) Subject: complex_new(): This could leak when the argument was neither string nor X-Git-Tag: v2.4a1~1739 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=465fa3dac49e5bbbb7904c755ff999dd5362c83e;p=python 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 ). --- diff --git a/Misc/NEWS b/Misc/NEWS index ee464cac67..63827d295a 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -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 4367ff6570..d50a6eb202 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)) {