diff -r dd0f1fa809c5 Objects/listobject.c --- a/Objects/listobject.c Thu Aug 18 21:45:12 2016 -0400 +++ b/Objects/listobject.c Fri Aug 19 16:41:17 2016 +0800 @@ -140,7 +140,6 @@ PyList_New(Py_ssize_t size) { PyListObject *op; - size_t nbytes; #ifdef SHOW_ALLOC_COUNT static int initialized = 0; if (!initialized) { @@ -153,11 +152,6 @@ PyErr_BadInternalCall(); return NULL; } - /* Check for overflow without an actual overflow, - * which can cause compiler to optimise out */ - if ((size_t)size > PY_SIZE_MAX / sizeof(PyObject *)) - return PyErr_NoMemory(); - nbytes = size * sizeof(PyObject *); if (numfree) { numfree--; op = free_list[numfree]; @@ -176,12 +170,11 @@ if (size <= 0) op->ob_item = NULL; else { - op->ob_item = (PyObject **) PyMem_MALLOC(nbytes); + op->ob_item = (PyObject **) PyMem_Calloc(size, sizeof(PyObject *)); if (op->ob_item == NULL) { Py_DECREF(op); return PyErr_NoMemory(); } - memset(op->ob_item, 0, nbytes); } Py_SIZE(op) = size; op->allocated = size; @@ -2503,9 +2496,6 @@ step = -step; } - assert((size_t)slicelength <= - PY_SIZE_MAX / sizeof(PyObject*)); - garbage = (PyObject**) PyMem_MALLOC(slicelength*sizeof(PyObject*)); if (!garbage) {