This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author ncoghlan
Recipients ncoghlan
Date 2022-04-03.06:41:45
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1648968106.21.0.863482035825.issue47204@roundup.psfhosted.org>
In-reply-to
Content
While working on the first PR for bpo-44800 I provoked an obscure failure in PyImport_ImportModule by making PyEval_GetGlobals set an exception when returning NULL (as PyEval_GetLocals has done since bpo-18408 was implemented for Python 3.4).

This ticket covers adding an embedding test case that:

* ensures PyEval_GetGlobals() returns NULL without an exception when no Python frame is active
* ensures PyEval_GetLocals() returns NULL and sets an exception when no Python frame is active
* ensures PyImport_ImportModule still works when no Python frame is active

There's an option to slightly change the behaviour of `PyEval_GetLocals()` to NOT set an exception in the "no Python frame" case, and instead only set the error when there is a Python frame, but something goes wrong when attempting to access the fast locals array (such as a memory allocation failure).
History
Date User Action Args
2022-04-03 06:41:46ncoghlansetrecipients: + ncoghlan
2022-04-03 06:41:46ncoghlansetmessageid: <1648968106.21.0.863482035825.issue47204@roundup.psfhosted.org>
2022-04-03 06:41:46ncoghlanlinkissue47204 messages
2022-04-03 06:41:45ncoghlancreate