From 400273a799581e5eb86538d8c88fb872705475ab Mon Sep 17 00:00:00 2001 From: Damien George Date: Tue, 22 May 2018 16:54:03 +1000 Subject: py/objgenerator: Protect against reentering a generator. Generators that are already executing cannot be reexecuted. This patch puts in a check for such a case. Thanks to @jepler for finding the bug. --- tests/basics/gen_yield_from_executing.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 tests/basics/gen_yield_from_executing.py (limited to 'tests/basics') diff --git a/tests/basics/gen_yield_from_executing.py b/tests/basics/gen_yield_from_executing.py new file mode 100644 index 000000000..cad0c7695 --- /dev/null +++ b/tests/basics/gen_yield_from_executing.py @@ -0,0 +1,15 @@ +# yielding from an already executing generator is not allowed + +def f(): + yield 1 + # g here is already executing so this will raise an exception + yield from g + +g = f() + +print(next(g)) + +try: + next(g) +except ValueError: + print('ValueError') -- cgit v1.2.3