- Neatened the braces in PyList_New().
- Made sure "indexerr" was initialized to NULL.
- Factored if blocks in PyList_Append().
- Made sure "allocated" is initialized in list_init().
This commit is contained in:
Raymond Hettinger 2004-05-05 06:28:16 +00:00
parent 0468e416c1
commit fdfe618228
1 changed files with 9 additions and 16 deletions

View File

@ -65,9 +65,8 @@ PyList_New(int size)
} }
nbytes = size * sizeof(PyObject *); nbytes = size * sizeof(PyObject *);
/* Check for overflow */ /* Check for overflow */
if (nbytes / sizeof(PyObject *) != (size_t)size) { if (nbytes / sizeof(PyObject *) != (size_t)size)
return PyErr_NoMemory(); return PyErr_NoMemory();
}
if (num_free_lists) { if (num_free_lists) {
num_free_lists--; num_free_lists--;
op = free_lists[num_free_lists]; op = free_lists[num_free_lists];
@ -77,14 +76,12 @@ PyList_New(int size)
if (op == NULL) if (op == NULL)
return NULL; return NULL;
} }
if (size <= 0) { if (size <= 0)
op->ob_item = NULL; op->ob_item = NULL;
}
else { else {
op->ob_item = (PyObject **) PyMem_MALLOC(nbytes); op->ob_item = (PyObject **) PyMem_MALLOC(nbytes);
if (op->ob_item == NULL) { if (op->ob_item == NULL)
return PyErr_NoMemory(); return PyErr_NoMemory();
}
memset(op->ob_item, 0, sizeof(*op->ob_item) * size); memset(op->ob_item, 0, sizeof(*op->ob_item) * size);
} }
op->ob_size = size; op->ob_size = size;
@ -104,7 +101,7 @@ PyList_Size(PyObject *op)
return ((PyListObject *)op) -> ob_size; return ((PyListObject *)op) -> ob_size;
} }
static PyObject *indexerr; static PyObject *indexerr = NULL;
PyObject * PyObject *
PyList_GetItem(PyObject *op, int i) PyList_GetItem(PyObject *op, int i)
@ -213,15 +210,10 @@ app1(PyListObject *self, PyObject *v)
int int
PyList_Append(PyObject *op, PyObject *newitem) PyList_Append(PyObject *op, PyObject *newitem)
{ {
if (!PyList_Check(op)) { if (PyList_Check(op) && (newitem != NULL))
PyErr_BadInternalCall(); return app1((PyListObject *)op, newitem);
return -1; PyErr_BadInternalCall();
} return -1;
if (newitem == NULL) {
PyErr_BadInternalCall();
return -1;
}
return app1((PyListObject *)op, newitem);
} }
/* Methods */ /* Methods */
@ -2314,6 +2306,7 @@ list_init(PyListObject *self, PyObject *args, PyObject *kw)
if (!PyArg_ParseTupleAndKeywords(args, kw, "|O:list", kwlist, &arg)) if (!PyArg_ParseTupleAndKeywords(args, kw, "|O:list", kwlist, &arg))
return -1; return -1;
/* Empty previous contents */ /* Empty previous contents */
self->allocated = self->ob_size;
if (self->ob_size != 0) { if (self->ob_size != 0) {
if (list_ass_slice(self, 0, self->ob_size, (PyObject *)NULL) != 0) if (list_ass_slice(self, 0, self->ob_size, (PyObject *)NULL) != 0)
return -1; return -1;