[Python-checkins] python/dist/src/Objects dictobject.c,2.157,2.158

gvanrossum at users.sourceforge.net gvanrossum at users.sourceforge.net
Sat Mar 20 14:12:01 EST 2004


Update of /cvsroot/python/python/dist/src/Objects
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9034

Modified Files:
	dictobject.c 
Log Message:
GCC was complaining that 'value' in dictiter_iternextvalue() wasn't
necessarily always set before used.  Between Tim, Armin & me we
couldn't prove GCC wrong, so we decided to fix the algorithm.  This
version is Armin's.


Index: dictobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/dictobject.c,v
retrieving revision 2.157
retrieving revision 2.158
diff -C2 -d -r2.157 -r2.158
*** dictobject.c	19 Mar 2004 10:30:00 -0000	2.157
--- dictobject.c	20 Mar 2004 19:11:58 -0000	2.158
***************
*** 2149,2161 ****
  
  	i = di->di_pos;
! 	if (i < 0)
  		goto fail;
  	ep = d->ma_table;
! 	mask = d->ma_mask;
! 	while (i <= mask && (value=ep[i].me_value) == NULL)
  		i++;
  	di->di_pos = i+1;
- 	if (i > mask)
- 		goto fail;
  	di->len--;
  	Py_INCREF(value);
--- 2149,2162 ----
  
  	i = di->di_pos;
! 	mask = d->ma_mask;
! 	if (i < 0 || i > mask)
  		goto fail;
  	ep = d->ma_table;
! 	while ((value=ep[i].me_value) == NULL) {
  		i++;
+ 		if (i > mask)
+ 			goto fail;
+ 	}
  	di->di_pos = i+1;
  	di->len--;
  	Py_INCREF(value);




More information about the Python-checkins mailing list