From 465fa3dac49e5bbbb7904c755ff999dd5362c83e Mon Sep 17 00:00:00 2001 From: Tim Peters Date: Fri, 15 Aug 2003 01:16:37 +0000 Subject: [PATCH] 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 ). --- Misc/NEWS | 3 +++ Objects/complexobject.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/Misc/NEWS b/Misc/NEWS index ee464cac67b..63827d295a8 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 4367ff6570e..d50a6eb202b 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)) {