From 4e173846c8688402c81d181a58b1fd787f88527a Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Fri, 7 Dec 2001 04:25:10 +0000 Subject: [PATCH] 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. --- Modules/_sre.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Modules/_sre.c b/Modules/_sre.c index c78ed52c421..d01f087cde0 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;