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.
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 @@
 PyObject *
 PySequence_Fast(PyObject *v, const char *m)
 {
+	PyObject *it;
+
 	if (v == NULL)
 		return null_error();
 
@@ -1504,9 +1506,15 @@
 		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;
 }