From fa77e09dd006c9852d636481af6c6199b2d7b5aa Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Thu, 28 Jan 1999 18:49:12 +0000 Subject: [PATCH] builtin_map(): A better fix for the previous leak plug (remember PyList_Append steals a reference even if it fails). builtin_filter(): Had the same leak problem as builtin_map(). --- Python/bltinmodule.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index 1929ae92ba7..b0d0648c0f0 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -232,8 +232,10 @@ builtin_filter(self, args) goto Fail_1; } else { + int status = PyList_Append(result, item); j++; - if (PyList_Append(result, item) < 0) + Py_DECREF(item); + if (status < 0) goto Fail_1; } } else { @@ -901,9 +903,10 @@ builtin_map(self, args) goto Fail_1; } if (i >= len) { - if (PyList_Append(result, value) < 0) - goto Fail_1; + int status = PyList_Append(result, value); Py_DECREF(value); + if (status < 0) + goto Fail_1; } else { if (PyList_SetItem(result, i, value) < 0)