[Python-checkins] python/dist/src/Modules itertoolsmodule.c, 1.18,
1.18.6.1
rhettinger at users.sourceforge.net
rhettinger at users.sourceforge.net
Fri Aug 29 17:13:18 EDT 2003
Update of /cvsroot/python/python/dist/src/Modules
In directory sc8-pr-cvs1:/tmp/cvs-serv796/Modules
Modified Files:
Tag: release23-maint
itertoolsmodule.c
Log Message:
SF bug #793826: using itertools.izip to mutate tuples
Avoid Armin Rigo's dastardly exercise in re-entrancy.
Index: itertoolsmodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/itertoolsmodule.c,v
retrieving revision 1.18
retrieving revision 1.18.6.1
diff -C2 -d -r1.18 -r1.18.6.1
*** itertoolsmodule.c 14 Jul 2003 07:07:12 -0000 1.18
--- itertoolsmodule.c 29 Aug 2003 23:13:16 -0000 1.18.6.1
***************
*** 1600,1613 ****
if (result->ob_refcnt == 1) {
for (i=0 ; i < tuplesize ; i++) {
it = PyTuple_GET_ITEM(lz->ittuple, i);
assert(PyIter_Check(it));
item = (*it->ob_type->tp_iternext)(it);
! if (item == NULL)
return NULL;
Py_DECREF(PyTuple_GET_ITEM(result, i));
PyTuple_SET_ITEM(result, i, item);
}
- Py_INCREF(result);
} else {
result = PyTuple_New(tuplesize);
--- 1600,1615 ----
if (result->ob_refcnt == 1) {
+ Py_INCREF(result);
for (i=0 ; i < tuplesize ; i++) {
it = PyTuple_GET_ITEM(lz->ittuple, i);
assert(PyIter_Check(it));
item = (*it->ob_type->tp_iternext)(it);
! if (item == NULL) {
! Py_DECREF(result);
return NULL;
+ }
Py_DECREF(PyTuple_GET_ITEM(result, i));
PyTuple_SET_ITEM(result, i, item);
}
} else {
result = PyTuple_New(tuplesize);
More information about the Python-checkins
mailing list