Small optimization for corner case where maxlen==0.
diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c
index 0029532..9532f1b 100644
--- a/Modules/_collectionsmodule.c
+++ b/Modules/_collectionsmodule.c
@@ -276,6 +276,23 @@
 
 PyDoc_STRVAR(appendleft_doc, "Add an element to the left side of the deque.");
 
+
+/* Run an iterator to exhaustion.  Shortcut for 
+   the extend/extendleft methods when maxlen == 0. */
+static PyObject*
+consume_iterator(PyObject *it)
+{
+	PyObject *item;
+
+	while ((item = PyIter_Next(it)) != NULL) {
+		Py_DECREF(item);
+	}
+	Py_DECREF(it);
+	if (PyErr_Occurred())
+		return NULL;
+	Py_RETURN_NONE;
+}
+
 static PyObject *
 deque_extend(dequeobject *deque, PyObject *iterable)
 {
@@ -285,6 +302,9 @@
 	if (it == NULL)
 		return NULL;
 
+	if (deque->maxlen == 0)
+		return consume_iterator(it);
+
 	while ((item = PyIter_Next(it)) != NULL) {
 		deque->state++;
 		if (deque->rightindex == BLOCKLEN-1) {
@@ -323,6 +343,9 @@
 	if (it == NULL)
 		return NULL;
 
+	if (deque->maxlen == 0)
+		return consume_iterator(it);
+
 	while ((item = PyIter_Next(it)) != NULL) {
 		deque->state++;
 		if (deque->leftindex == 0) {