[Python-checkins] r42875 - python/trunk/Python/modsupport.c

neal.norwitz python-checkins at python.org
Tue Mar 7 00:07:34 CET 2006


Author: neal.norwitz
Date: Tue Mar  7 00:07:34 2006
New Revision: 42875

Modified:
   python/trunk/Python/modsupport.c
Log:
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.


Modified: python/trunk/Python/modsupport.c
==============================================================================
--- python/trunk/Python/modsupport.c	(original)
+++ python/trunk/Python/modsupport.c	Tue Mar  7 00:07:34 2006
@@ -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);
+		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;
 }
 


More information about the Python-checkins mailing list