[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