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.
This commit is contained in:
parent
202dd1ef42
commit
4e173846c8
|
@ -2199,7 +2199,7 @@ pattern_subx(PatternObject* self, PyObject* template, PyObject* string,
|
||||||
goto error;
|
goto error;
|
||||||
args = Py_BuildValue("(O)", match);
|
args = Py_BuildValue("(O)", match);
|
||||||
if (!args) {
|
if (!args) {
|
||||||
Py_DECREF(args);
|
Py_DECREF(match);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
item = PyObject_CallObject(filter, args);
|
item = PyObject_CallObject(filter, args);
|
||||||
|
@ -2246,6 +2246,8 @@ next:
|
||||||
|
|
||||||
state_fini(&state);
|
state_fini(&state);
|
||||||
|
|
||||||
|
Py_DECREF(filter);
|
||||||
|
|
||||||
/* convert list to single string (also removes list) */
|
/* convert list to single string (also removes list) */
|
||||||
item = join(list, self->pattern);
|
item = join(list, self->pattern);
|
||||||
|
|
||||||
|
@ -2258,6 +2260,7 @@ next:
|
||||||
return item;
|
return item;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
|
Py_DECREF(filter);
|
||||||
Py_DECREF(list);
|
Py_DECREF(list);
|
||||||
state_fini(&state);
|
state_fini(&state);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
Loading…
Reference in New Issue