[Python-checkins] r74702 - python/trunk/Python/bltinmodule.c

benjamin.peterson python-checkins at python.org
Mon Sep 7 15:02:20 CEST 2009


Author: benjamin.peterson
Date: Mon Sep 7 15:02:15 2009
New Revision: 74702
Log:
revert r74699 since it loses useful error information
Modified:
 python/trunk/Python/bltinmodule.c
Modified: python/trunk/Python/bltinmodule.c
==============================================================================
--- python/trunk/Python/bltinmodule.c	(original)
+++ python/trunk/Python/bltinmodule.c	Mon Sep 7 15:02:15 2009
@@ -968,8 +968,14 @@
 		/* Get iterator. */
 		curseq = PyTuple_GetItem(args, i+1);
 		sqp->it = PyObject_GetIter(curseq);
-		if (sqp->it == NULL)
+		if (sqp->it == NULL) {
+			static char errmsg[] =
+			 "argument %d to map() must support iteration";
+			char errbuf[sizeof(errmsg) + 25];
+			PyOS_snprintf(errbuf, sizeof(errbuf), errmsg, i+2);
+			PyErr_SetString(PyExc_TypeError, errbuf);
 			goto Fail_2;
+		}
 
 		/* Update len. */
 		curlen = _PyObject_LengthHint(curseq, 8);
@@ -2457,8 +2463,13 @@
 	for (i = 0; i < itemsize; ++i) {
 		PyObject *item = PyTuple_GET_ITEM(args, i);
 		PyObject *it = PyObject_GetIter(item);
-		if (it == NULL)
+		if (it == NULL) {
+			if (PyErr_ExceptionMatches(PyExc_TypeError))
+				PyErr_Format(PyExc_TypeError,
+				 "zip argument #%zd must support iteration",
+				 i+1);
 			goto Fail_ret_itlist;
+		}
 		PyTuple_SET_ITEM(itlist, i, it);
 	}
 


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /