* may keep a chain of frames alive or it could create a reference
* cycle. */
assert(f->f_back != NULL);
- Py_DECREF(f->f_back);
- f->f_back = NULL;
+ Py_CLEAR(f->f_back);
/* If the generator just returned (as opposed to yielding), signal
* that the generator is exhausted. */
return result; /* Common case, fast path */
Py_DECREF(result);
if (ok > 0) {
- Py_DECREF(it->it_callable);
- it->it_callable = NULL;
- Py_DECREF(it->it_sentinel);
- it->it_sentinel = NULL;
+ Py_CLEAR(it->it_callable);
+ Py_CLEAR(it->it_sentinel);
}
}
else if (PyErr_ExceptionMatches(PyExc_StopIteration)) {
PyErr_Clear();
- Py_DECREF(it->it_callable);
- it->it_callable = NULL;
- Py_DECREF(it->it_sentinel);
- it->it_sentinel = NULL;
+ Py_CLEAR(it->it_callable);
+ Py_CLEAR(it->it_sentinel);
}
}
return NULL;