Jacob Holm wrote:
1. There is a small refcounting bug in your gen_iternext function. On success, it returns without decref'ing "yf".
Thanks, I'll fix that.
2. In the comment for "gen_undelegate" you mention "certain recursive situations" where a generator may lose its frame before we get a chance to clear f_yieldfrom. Can you elaborate?
I can't remember the details, but I definitely ran into one during development, which is why I added that function. Have you tried running all of my tests?
3. It looks like you are not calling "close" properly from "next", "send" and "throw".
I'm not sure what you mean by that. Can you provide an example that doesn't behave as expected?
4. It looks like your "gen_close" does not try to throw a GeneratorExit before calling close when delegating to a non-generator.
I'm not sure what you mean here either. Regardless of the type of sub-iterator, it should end up getting to the part which does if (!PyErr_Occurred()) PyErr_SetNone(PyExc_GeneratorExit); Again, and example that doesn't behave properly would help. -- Greg