diff options
author | Guido van Rossum <guido@python.org> | 2002-10-11 20:37:24 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2002-10-11 20:37:24 (GMT) |
commit | 6e08c1460c79962a98e106437a089d2fe306403c (patch) | |
tree | 4cfee2618b8054f0522ec43dfd458828e6e3f389 | |
parent | c78462fb94b15d71c0dbfa6f3dfc2fabd29f635f (diff) | |
download | cpython-6e08c1460c79962a98e106437a089d2fe306403c.zip cpython-6e08c1460c79962a98e106437a089d2fe306403c.tar.gz cpython-6e08c1460c79962a98e106437a089d2fe306403c.tar.bz2 |
PyObject_Init[Var] is almost always called from the PyObject_NEW[_VAR]
macros. The 'op' argument is then the result from PyObject_MALLOC,
and that can of course be NULL. In that case, PyObject_Init[Var]
would raise a SystemError with "NULL object passed to
PyObject_Init[Var]". But there's nothing the caller of the macro can
do about this. So PyObject_Init[Var] should call just PyErr_NoMemory.
Will backport.
-rw-r--r-- | Objects/object.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/Objects/object.c b/Objects/object.c index 523a881..20a6a93 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -109,11 +109,8 @@ _Py_NegativeRefcount(const char *fname, int lineno, PyObject *op) PyObject * PyObject_Init(PyObject *op, PyTypeObject *tp) { - if (op == NULL) { - PyErr_SetString(PyExc_SystemError, - "NULL object passed to PyObject_Init"); - return op; - } + if (op == NULL) + return PyErr_NoMemory(); /* Any changes should be reflected in PyObject_INIT (objimpl.h) */ op->ob_type = tp; _Py_NewReference(op); @@ -123,11 +120,8 @@ PyObject_Init(PyObject *op, PyTypeObject *tp) PyVarObject * PyObject_InitVar(PyVarObject *op, PyTypeObject *tp, int size) { - if (op == NULL) { - PyErr_SetString(PyExc_SystemError, - "NULL object passed to PyObject_InitVar"); - return op; - } + if (op == NULL) + return (PyVarObject *) PyErr_NoMemory(); /* Any changes should be reflected in PyObject_INIT_VAR */ op->ob_size = size; op->ob_type = tp; |