[Python-checkins] python/dist/src/Objects object.c,2.162.6.5,2.162.6.6

gvanrossum@users.sourceforge.net gvanrossum@users.sourceforge.net
2002年10月11日 13:38:00 -0700


Update of /cvsroot/python/python/dist/src/Objects
In directory usw-pr-cvs1:/tmp/cvs-serv7961
Modified Files:
 Tag: release22-maint
	object.c 
Log Message:
Backport 2.193:
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.
Index: object.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/object.c,v
retrieving revision 2.162.6.5
retrieving revision 2.162.6.6
diff -C2 -d -r2.162.6.5 -r2.162.6.6
*** object.c	8 Jul 2002 22:30:52 -0000	2.162.6.5
--- object.c	11 Oct 2002 20:37:58 -0000	2.162.6.6
***************
*** 100,108 ****
 PyObject_Init(PyObject *op, PyTypeObject *tp)
 {
! 	if (op == NULL) {
! 		PyErr_SetString(PyExc_SystemError,
! 				"NULL object passed to PyObject_Init");
! 		return op;
! 	}
 	/* Any changes should be reflected in PyObject_INIT (objimpl.h) */
 	op->ob_type = tp;
--- 100,105 ----
 PyObject_Init(PyObject *op, PyTypeObject *tp)
 {
! 	if (op == NULL)
! 		return PyErr_NoMemory();
 	/* Any changes should be reflected in PyObject_INIT (objimpl.h) */
 	op->ob_type = tp;
***************
*** 114,122 ****
 PyObject_InitVar(PyVarObject *op, PyTypeObject *tp, int size)
 {
! 	if (op == NULL) {
! 		PyErr_SetString(PyExc_SystemError,
! 				"NULL object passed to PyObject_InitVar");
! 		return op;
! 	}
 	/* Any changes should be reflected in PyObject_INIT_VAR */
 	op->ob_size = size;
--- 111,116 ----
 PyObject_InitVar(PyVarObject *op, PyTypeObject *tp, int size)
 {
! 	if (op == NULL)
! 		return (PyVarObject *) PyErr_NoMemory();
 	/* Any changes should be reflected in PyObject_INIT_VAR */
 	op->ob_size = size;

AltStyle によって変換されたページ (->オリジナル) /