From: Guido van Rossum Date: Fri, 7 Dec 2001 04:25:10 +0000 (+0000) Subject: Fix for #489672 (Neil Norwitz): memory leak in test_sre. X-Git-Tag: v2.2.1c1~490 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4e173846c8688402c81d181a58b1fd787f88527a;p=python Fix for #489672 (Neil Norwitz): memory leak in test_sre. (At least for the repeatable test case that Tim produced.) pattern_subx(): Add missing DECREF(filter) in both exit branches (normal and error return). Also fix a DECREF(args) that should certainly be a DECREF(match) -- because it's inside if (!args) and right after allocation of match. --- diff --git a/Modules/_sre.c b/Modules/_sre.c index c78ed52c42..d01f087cde 100644 --- a/Modules/_sre.c +++ b/Modules/_sre.c @@ -2199,7 +2199,7 @@ pattern_subx(PatternObject* self, PyObject* template, PyObject* string, goto error; args = Py_BuildValue("(O)", match); if (!args) { - Py_DECREF(args); + Py_DECREF(match); goto error; } item = PyObject_CallObject(filter, args); @@ -2246,6 +2246,8 @@ next: state_fini(&state); + Py_DECREF(filter); + /* convert list to single string (also removes list) */ item = join(list, self->pattern); @@ -2258,6 +2260,7 @@ next: return item; error: + Py_DECREF(filter); Py_DECREF(list); state_fini(&state); return NULL;