Try to cleanup the error handling a bit so there aren't false positives
from static analysis.  v was already checked for NULL above, so we don't
need a second check.
diff --git a/Python/modsupport.c b/Python/modsupport.c
index f53e4c3..cb6bdfd 100644
--- a/Python/modsupport.c
+++ b/Python/modsupport.c
@@ -206,7 +206,8 @@
 	int itemfailed = 0;
 	if (n < 0)
 		return NULL;
-	if ((v = PyList_New(n)) == NULL)
+	v = PyList_New(n);
+	if (v == NULL)
 		return NULL;
 	/* Note that we can't bail immediately on error as this will leak
 	   refcounts on any 'N' arguments. */
@@ -219,18 +220,21 @@
 		}
 		PyList_SetItem(v, i, w);
 	}
-	if (v != NULL && **p_format != endchar) {
+
+	if (itemfailed) {
+		/* do_mkvalue() should have already set an error */
 		Py_DECREF(v);
-		v = NULL;
+		return NULL;
+	}
+	if (**p_format != endchar) {
+		Py_DECREF(v);
 		PyErr_SetString(PyExc_SystemError,
 				"Unmatched paren in format");
+		return NULL;
 	}
-	else if (endchar)
+
+	if (endchar)
 		++*p_format;
-	if (itemfailed) {
-		Py_DECREF(v);
-		v = NULL;
-	}
 	return v;
 }