From: Barry Warsaw Date: Thu, 28 Jan 1999 18:49:12 +0000 (+0000) Subject: builtin_map(): A better fix for the previous leak plug (remember X-Git-Tag: v1.5.2b2~237 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fa77e09dd006c9852d636481af6c6199b2d7b5aa;p=thirdparty%2FPython%2Fcpython.git 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(). --- diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index 1929ae92ba7f..b0d0648c0f0d 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)