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! |
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)
@@ -0,0 +1,2 @@ | |||
Type check the result of constructing the new exception instance in | |||
:c:func:`_PyErr_CreateException` |
This comment has been minimized.
This comment has been minimized.
serhiy-storchaka
Dec 21, 2019
Member
Since it is your first contribution, please add your name in Misc/ACKS.
You can also add "Patch by yourname." here. Don't forget about the ending period.
This comment has been minimized.
This comment has been minimized.
|
3cb4685
to
a2a7e43
Misc/NEWS.d/next/Core and Builtins/2019-12-21-14-18-32.bpo-39091.dOexgQ.rst
Outdated
Show resolved
Hide resolved
a2a7e43
to
bfa9b85
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