[Python-checkins] CVS: python/dist/src/Objects dictobject.c,2.81,2.82
Guido van Rossum
gvanrossum@users.sourceforge.net
Wed, 02 May 2001 08:13:46 -0700
Update of /cvsroot/python/python/dist/src/Objects
In directory usw-pr-cvs1:/tmp/cvs-serv31550
Modified Files:
dictobject.c
Log Message:
Mchael Hudson pointed out that the code for detecting changes in
dictionary size was comparing ma_size, the hash table size, which is
always a power of two, rather than ma_used, wich changes on each
insertion or deletion. Fixed this.
Index: dictobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/dictobject.c,v
retrieving revision 2.81
retrieving revision 2.82
diff -C2 -r2.81 -r2.82
*** dictobject.c 2001/05/01 12:10:21 2.81
--- dictobject.c 2001/05/02 15:13:44 2.82
***************
*** 1480,1484 ****
PyObject_HEAD
dictobject *di_dict;
! int di_size;
int di_pos;
binaryfunc di_select;
--- 1480,1484 ----
PyObject_HEAD
dictobject *di_dict;
! int di_used;
int di_pos;
binaryfunc di_select;
***************
*** 1494,1498 ****
Py_INCREF(dict);
di->di_dict = dict;
! di->di_size = dict->ma_size;
di->di_pos = 0;
di->di_select = select;
--- 1494,1498 ----
Py_INCREF(dict);
di->di_dict = dict;
! di->di_used = dict->ma_used;
di->di_pos = 0;
di->di_select = select;
***************
*** 1512,1516 ****
PyObject *key, *value;
! if (di->di_size != di->di_dict->ma_size) {
PyErr_SetString(PyExc_RuntimeError,
"dictionary changed size during iteration");
--- 1512,1516 ----
PyObject *key, *value;
! if (di->di_used != di->di_dict->ma_used) {
PyErr_SetString(PyExc_RuntimeError,
"dictionary changed size during iteration");
***************
*** 1547,1551 ****
PyObject *key, *value;
! if (di->di_size != di->di_dict->ma_size) {
PyErr_SetString(PyExc_RuntimeError,
"dictionary changed size during iteration");
--- 1547,1551 ----
PyObject *key, *value;
! if (di->di_used != di->di_dict->ma_used) {
PyErr_SetString(PyExc_RuntimeError,
"dictionary changed size during iteration");