From b255e8d09d5c6db5f0a8e8a57dad086afe6d823a Mon Sep 17 00:00:00 2001 From: Sergey Fedoseev Date: Wed, 19 Dec 2018 02:15:58 +0500 Subject: [PATCH 1/2] Simplify list_preallocate_exact(). --- Objects/listobject.c | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/Objects/listobject.c b/Objects/listobject.c index b1f2b59db0a72f..ac1d319b98d98a 100644 --- a/Objects/listobject.c +++ b/Objects/listobject.c @@ -82,25 +82,13 @@ list_preallocate_exact(PyListObject *self, Py_ssize_t size) { assert(self->ob_item == NULL); - PyObject **items; - size_t allocated; - - allocated = (size_t)size; - if (allocated > (size_t)PY_SSIZE_T_MAX / sizeof(PyObject *)) { - PyErr_NoMemory(); - return -1; - } - - if (size == 0) { - allocated = 0; - } - items = (PyObject **)PyMem_New(PyObject*, allocated); + PyObject **items = PyMem_New(PyObject*, size); if (items == NULL) { PyErr_NoMemory(); return -1; } self->ob_item = items; - self->allocated = allocated; + self->allocated = size; return 0; } From e0844bbe8936246390872fdbea541a23cfc62204 Mon Sep 17 00:00:00 2001 From: Sergey Fedoseev Date: Thu, 20 Dec 2018 12:43:49 +0500 Subject: [PATCH 2/2] Add assert. --- Objects/listobject.c | 1 + 1 file changed, 1 insertion(+) diff --git a/Objects/listobject.c b/Objects/listobject.c index ac1d319b98d98a..17c37ba9756073 100644 --- a/Objects/listobject.c +++ b/Objects/listobject.c @@ -81,6 +81,7 @@ static int list_preallocate_exact(PyListObject *self, Py_ssize_t size) { assert(self->ob_item == NULL); + assert(size > 0); PyObject **items = PyMem_New(PyObject*, size); if (items == NULL) {