From: Guido van Rossum Date: Tue, 10 Jan 1995 17:40:55 +0000 (+0000) Subject: fix subtle refcount big in filter() -- Tim MacKenzie X-Git-Tag: v1.2b1~22 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=58b6873f6b348ca4511ac8fa01bed76b049f6ec5;p=thirdparty%2FPython%2Fcpython.git fix subtle refcount big in filter() -- Tim MacKenzie --- diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index f47b4085e29e..b3ac3c6a555c 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -186,21 +186,22 @@ builtin_filter(self, args) if (func == None) { good = item; + INCREF(good); } else { object *arg = mkvalue("(O)", item); - DECREF(item); if (arg == NULL) goto Fail_1; good = call_object(func, arg); DECREF(arg); - if (good == NULL) + if (good == NULL) { + DECREF(item); goto Fail_1; + } } ok = testbool(good); DECREF(good); if (ok) { - INCREF(item); if (j < len) { if (setlistitem(result, j++, item) < 0) goto Fail_1; @@ -210,6 +211,8 @@ builtin_filter(self, args) if (addlistitem(result, item) < 0) goto Fail_1; } + } else { + DECREF(item); } }