[Python-checkins] r60247 - python/branches/release25-maint/Objects/object.c

guido.van.rossum python-checkins at python.org
Thu Jan 24 18:59:56 CET 2008


Author: guido.van.rossum
Date: Thu Jan 24 18:59:56 2008
New Revision: 60247

Modified:
   python/branches/release25-maint/Objects/object.c
Log:
Backport r60246.
Fix issue #1303614, test67.py.


Modified: python/branches/release25-maint/Objects/object.c
==============================================================================
--- python/branches/release25-maint/Objects/object.c	(original)
+++ python/branches/release25-maint/Objects/object.c	Thu Jan 24 18:59:56 2008
@@ -1335,12 +1335,15 @@
 		dictptr = (PyObject **) ((char *)obj + dictoffset);
 		dict = *dictptr;
 		if (dict != NULL) {
+			Py_INCREF(dict);
 			res = PyDict_GetItem(dict, name);
 			if (res != NULL) {
 				Py_INCREF(res);
 				Py_XDECREF(descr);
+                                Py_DECREF(dict);
 				goto done;
 			}
+                        Py_DECREF(dict);
 		}
 	}
 
@@ -1421,12 +1424,14 @@
 			*dictptr = dict;
 		}
 		if (dict != NULL) {
+			Py_INCREF(dict);
 			if (value == NULL)
 				res = PyDict_DelItem(dict, name);
 			else
 				res = PyDict_SetItem(dict, name, value);
 			if (res < 0 && PyErr_ExceptionMatches(PyExc_KeyError))
 				PyErr_SetObject(PyExc_AttributeError, name);
+			Py_DECREF(dict);
 			goto done;
 		}
 	}


More information about the Python-checkins mailing list