From 2fb702966c9c7e29c2697cf0d9dc6b1a19e465d7 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Sun, 11 Jan 2004 23:26:51 +0000 Subject: [PATCH] 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. --- Objects/abstract.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Objects/abstract.c b/Objects/abstract.c index 342d9718798..4ac92608ab9 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; }