From 58b6873f6b348ca4511ac8fa01bed76b049f6ec5 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 10 Jan 1995 17:40:55 +0000 Subject: fix subtle refcount big in filter() -- Tim MacKenzie --- Python/bltinmodule.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index f47b408..b3ac3c6 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); } } -- cgit v0.12