Mercurial > cpython-lru_cache-weakref
diff Modules/itertoolsmodule.c @ 30239:e83575bb29da 2.3
SF bug #793826: using itertools.izip to mutate tuples
Avoid Armin Rigo's dastardly exercise in re-entrancy.
| author | Raymond Hettinger <python@rcn.com> |
|---|---|
| date | Fri, 29 Aug 2003 23:13:16 +0000 |
| parents | 45dc33433323 |
| children | 3fb3747ce304 |
line wrap: on
line diff
--- a/Modules/itertoolsmodule.c Fri Aug 29 22:46:25 2003 +0000 +++ b/Modules/itertoolsmodule.c Fri Aug 29 23:13:16 2003 +0000 @@ -1599,16 +1599,18 @@ PyObject *item; 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) + if (item == NULL) { + Py_DECREF(result); return NULL; + } Py_DECREF(PyTuple_GET_ITEM(result, i)); PyTuple_SET_ITEM(result, i, item); } - Py_INCREF(result); } else { result = PyTuple_New(tuplesize); if (result == NULL)
