summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2004-01-11 23:26:51 (GMT)
committerRaymond Hettinger <python@rcn.com>2004-01-11 23:26:51 (GMT)
commit2fb702966c9c7e29c2697cf0d9dc6b1a19e465d7 (patch)
tree827a5a5ab76ab4c4b4b12f487bb2f8974f3aa6a7
parent44a98237d875737515364299672293360e6c7ef6 (diff)
downloadcpython-2fb702966c9c7e29c2697cf0d9dc6b1a19e465d7.zip
cpython-2fb702966c9c7e29c2697cf0d9dc6b1a19e465d7.tar.gz
cpython-2fb702966c9c7e29c2697cf0d9dc6b1a19e465d7.tar.bz2
SF Patch #871704: Py_SequenceFast can mask errors
(Contributed by Greg Chapman.) Since this only changes the error message, I doubt that it should be backported.
-rw-r--r--Objects/abstract.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/Objects/abstract.c b/Objects/abstract.c
index 342d971..4ac9260 100644
--- a/Objects/abstract.c
+++ b/Objects/abstract.c
@@ -1496,6 +1496,8 @@ PySequence_List(PyObject *v)
PyObject *
PySequence_Fast(PyObject *v, const char *m)
{
+ PyObject *it;
+
if (v == NULL)
return null_error();
@@ -1504,9 +1506,15 @@ PySequence_Fast(PyObject *v, const char *m)
return v;
}
- v = PySequence_Tuple(v);
- if (v == NULL && PyErr_ExceptionMatches(PyExc_TypeError))
- return type_error(m);
+ it = PyObject_GetIter(v);
+ if (it == NULL) {
+ if (PyErr_ExceptionMatches(PyExc_TypeError))
+ return type_error(m);
+ return NULL;
+ }
+
+ v = PySequence_Tuple(it);
+ Py_DECREF(it);
return v;
}