[Python-checkins] CVS: python/dist/src/Objects classobject.c,2.90,2.91

Guido van Rossum python-dev@python.org
Wed, 28 Jun 2000 16:46:10 -0700


Update of /cvsroot/python/python/dist/src/Objects
In directory slayer.i.sourceforge.net:/tmp/cvs-serv24566

Modified Files:
	classobject.c 
Log Message:
Vladimir Marangozov:

Avoid calling the dealloc function, previously triggered with
DECREF(inst).  This caused a segfault in PyDict_GetItem, called with a
NULL dict, whenever inst->in_dict fails under low-memory conditions.


Index: classobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/classobject.c,v
retrieving revision 2.90
retrieving revision 2.91
diff -C2 -r2.90 -r2.91
*** classobject.c	2000/06/28 21:57:18	2.90
--- classobject.c	2000/06/28 23:46:07	2.91
***************
*** 490,500 ****
  	if (inst == NULL)
  		return NULL;
- 	Py_INCREF(class);
- 	inst->in_class = (PyClassObject *)class;
  	inst->in_dict = PyDict_New();
  	if (inst->in_dict == NULL) {
! 		Py_DECREF(inst);
  		return NULL;
  	}
  	if (initstr == NULL)
  		initstr = PyString_InternFromString("__init__");
--- 490,500 ----
  	if (inst == NULL)
  		return NULL;
  	inst->in_dict = PyDict_New();
  	if (inst->in_dict == NULL) {
! 		PyObject_DEL(inst);
  		return NULL;
  	}
+ 	Py_INCREF(class);
+ 	inst->in_class = (PyClassObject *)class;
  	if (initstr == NULL)
  		initstr = PyString_InternFromString("__init__");