diff --git a/Lib/test/test_types.py b/Lib/test/test_types.py
index 1e982d1..106d0a5 100644
--- a/Lib/test/test_types.py
+++ b/Lib/test/test_types.py
@@ -430,6 +430,10 @@
 c[2:3:] = ["two", "elements"]
 vereq(a, b)
 vereq(a, c)
+a = range(10)
+a[::2] = tuple(range(5))
+vereq(a, [0, 1, 1, 3, 2, 5, 3, 7, 4, 9])
+
 
 print '6.6 Mappings == Dictionaries'
 d = {}
diff --git a/Objects/listobject.c b/Objects/listobject.c
index 3e3b4d7..25372d3 100644
--- a/Objects/listobject.c
+++ b/Objects/listobject.c
@@ -2238,33 +2238,36 @@
 		}
 		else {
 			/* assign slice */
-			PyObject **garbage, *ins;
+			PyObject **garbage, *ins, *seq;
 			int cur, i;
 
-			if (!PyList_Check(value)) {
-				PyErr_Format(PyExc_TypeError,
-			     "must assign list (not \"%.200s\") to slice",
-					     value->ob_type->tp_name);
-				return -1;
-			}
-
-			if (PyList_GET_SIZE(value) != slicelength) {
-				PyErr_Format(PyExc_ValueError,
-            "attempt to assign list of size %d to extended slice of size %d",
-					     PyList_Size(value), slicelength);
-				return -1;
-			}
-
-			if (!slicelength)
-				return 0;
-
 			/* protect against a[::-1] = a */
 			if (self == (PyListObject*)value) {
-				value = list_slice((PyListObject*)value, 0,
+				seq = list_slice((PyListObject*)value, 0,
 						   PyList_GET_SIZE(value));
 			}
 			else {
-				Py_INCREF(value);
+				char msg[256];
+				PyOS_snprintf(msg, sizeof(msg),
+		      "must assign sequence (not \"%.200s\") to extended slice",
+					      value->ob_type->tp_name);
+				seq = PySequence_Fast(value, msg);
+				if (!seq)
+					return -1;
+			}
+
+			if (PySequence_Fast_GET_SIZE(seq) != slicelength) {
+				PyErr_Format(PyExc_ValueError,
+            "attempt to assign sequence of size %d to extended slice of size %d",
+					     PySequence_Fast_GET_SIZE(seq),
+					     slicelength);
+				Py_DECREF(seq);
+				return -1;
+			}
+
+			if (!slicelength) {
+				Py_DECREF(seq);
+				return 0;
 			}
 
 			garbage = (PyObject**)
@@ -2274,7 +2277,7 @@
 			     cur += step, i++) {
 				garbage[i] = PyList_GET_ITEM(self, cur);
 
-				ins = PyList_GET_ITEM(value, i);
+				ins = PySequence_Fast_GET_ITEM(seq, i);
 				Py_INCREF(ins);
 				PyList_SET_ITEM(self, cur, ins);
 			}
@@ -2284,7 +2287,7 @@
 			}
 
 			PyMem_FREE(garbage);
-			Py_DECREF(value);
+			Py_DECREF(seq);
 
 			return 0;
 		}
