From: Neal Norwitz <nnorwitz@gmail.com>
Date: Mon, 6 Mar 2006 23:07:34 +0000 (+0000)
Subject: Try to cleanup the error handling a bit so there aren't false positives
X-Git-Tag: v2.5a0~349
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3e90fa5940f7086f8617038524fe108bd58d627a;p=python

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 f53e4c362e..cb6bdfd285 100644
--- a/Python/modsupport.c
+++ b/Python/modsupport.c
@@ -206,7 +206,8 @@ do_mklist(const char **p_format, va_list *p_va, int endchar, int n)
 	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 @@ do_mklist(const char **p_format, va_list *p_va, int endchar, int n)
 		}
 		PyList_SetItem(v, i, w);
 	}
-	if (v != NULL && **p_format != endchar) {
+
+	if (itemfailed) {
+		/* do_mkvalue() should have already set an error */
+		Py_DECREF(v);
+		return NULL;
+	}
+	if (**p_format != endchar) {
 		Py_DECREF(v);
-		v = NULL;
 		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;
 }