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