Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Sign upbpo-39091: Fix segfault when Exception constructor returns non-exception for gen.throw #17658
Conversation
This comment has been minimized.
This comment has been minimized.
the-knights-who-say-ni
commented
Dec 19, 2019
Hello, and thanks for your contribution! I'm a bot set up to make sure that the project can legally accept this contribution by verifying everyone involved has signed the PSF contributor agreement (CLA). CLA MissingOur records indicate the following people have not signed the CLA: For legal reasons we need all the people listed to sign the CLA before we can look at your contribution. Please follow the steps outlined in the CPython devguide to rectify this issue. If you have recently signed the CLA, please wait at least one business day You can check yourself to see if the CLA has been received. Thanks again for the contribution, we look forward to reviewing it! |
ea55739
to
ad65177
ad65177
to
08e42d6
'should have returned an instance of BaseException'): | ||
gen.throw(E) | ||
|
||
self.assertRaises(StopIteration, next, gen) |
This comment has been minimized.
This comment has been minimized.
eric-wieser
Dec 20, 2019
•
Contributor
Now that we know the generator is exhausted, the next question might be "does the generator receive the TypeError
"?
So perhaps:
def boring_generator():
with self.assertRaisesRegex(
TypeError,
'should have returned an instance of BaseException'):
yield
gen = boring_generator()
next(gen) # advance to the yield in the with statement
gen.throw(E)
self.assertRaises(StopIteration, next, gen)
coolreader18 commentedDec 19, 2019
•
edited
I added a type check in
_PyErr_CreateException
as @serhiy-storchaka suggested.I'm not sure if I should replace the check in
do_raise
inceval.c
with a call to_PyErr_CreateException
somehow, as it's effectively the same functionality?https://bugs.python.org/issue39091