fix subtle refcount big in filter() -- Tim MacKenzie
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 @@
 
 		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 @@
 				if (addlistitem(result, item) < 0)
 					goto Fail_1;
 			}
+		} else {
+			DECREF(item);
 		}
 	}