changeset 26009:bbb698697efc

reachableroots: fix transposition of set and list types in PyArg_ParseTuple This is being masked by the function not properly returning NULL when it raises an exception, so the client code was just falling back to the native codepath when it got None back. A future change removes all reason for this C function to return None, which exposed this problem during development.
author Augie Fackler <augie@google.com>
date Tue, 11 Aug 2015 15:34:10 -0400
parents 59d57ea69ae6
children 2c03e521a0c5
files mercurial/parsers.c
diffstat 1 files changed, 4 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/parsers.c	Tue Aug 11 14:50:39 2015 -0400
+++ b/mercurial/parsers.c	Tue Aug 11 15:34:10 2015 -0400
@@ -1112,8 +1112,10 @@
 	long minroot;
 	PyObject *includepatharg = NULL;
 	int includepath = 0;
+	/* heads is a list */
 	PyObject *heads = NULL;
 	Py_ssize_t numheads;
+	/* roots is a set */
 	PyObject *roots = NULL;
 	PyObject *reachable = NULL;
 
@@ -1134,8 +1136,8 @@
 	char *seen = NULL;
 
 	/* Get arguments */
-	if (!PyArg_ParseTuple(args, "lO!O!O!", &minroot, &PySet_Type, &heads,
-				&PyList_Type, &roots, &PyBool_Type, &includepatharg))
+	if (!PyArg_ParseTuple(args, "lO!O!O!", &minroot, &PyList_Type, &heads,
+				&PySet_Type, &roots, &PyBool_Type, &includepatharg))
 		goto bail;
 
 	if (includepatharg == Py_True)