diff -r 0d5da548b80a Modules/_collectionsmodule.c --- a/Modules/_collectionsmodule.c Mon Nov 25 05:16:09 2013 +0200 +++ b/Modules/_collectionsmodule.c Mon Nov 25 18:25:29 2013 +0800 @@ -1038,8 +1038,12 @@ return -1; if (maxlenobj != NULL && maxlenobj != Py_None) { maxlen = PyLong_AsSsize_t(maxlenobj); - if (maxlen == -1 && PyErr_Occurred()) + if (maxlen == -1 && PyErr_Occurred()) { + if (PyErr_ExceptionMatches(PyExc_TypeError)) + PyErr_SetString(PyExc_ValueError, + "maxlen must be integer or None"); return -1; + } if (maxlen < 0) { PyErr_SetString(PyExc_ValueError, "maxlen must be non-negative"); return -1;