[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__");