mirror of https://github.com/python/cpython
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.
This commit is contained in:
parent
c78462fb94
commit
6e08c1460c
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue