]> granicus.if.org Git - python/commitdiff
revert r74699 since it loses useful error information
authorBenjamin Peterson <benjamin@python.org>
Mon, 7 Sep 2009 13:02:15 +0000 (13:02 +0000)
committerBenjamin Peterson <benjamin@python.org>
Mon, 7 Sep 2009 13:02:15 +0000 (13:02 +0000)
Python/bltinmodule.c

index b1b1e8e14046fe074ca5b240c978e72682006681..1f25d5d2087a301739b5b38fd50020742e550592 100644 (file)
@@ -968,8 +968,14 @@ builtin_map(PyObject *self, PyObject *args)
                /* 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 @@ builtin_zip(PyObject *self, PyObject *args)
        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);
        }