[Python-checkins] bpo-42923: Fix _Py_DumpExtensionModules() for NULL sysdict (GH-25262)
vstinner
webhook-mailer at python.org
Wed Apr 7 17:13:03 EDT 2021
https://github.com/python/cpython/commit/3d55aa9e7365af76e40680271328deece27a7339
commit: 3d55aa9e7365af76e40680271328deece27a7339
branch: master
author: Victor Stinner <vstinner at python.org>
committer: vstinner <vstinner at python.org>
date: 2021-04-07T23:12:45+02:00
summary:
bpo-42923: Fix _Py_DumpExtensionModules() for NULL sysdict (GH-25262)
Fix Py_FatalError() is called before interp->sysdict is set.
files:
M Python/pylifecycle.c
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index 64723ce82d76c..0ad1796e3cbc6 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -2551,12 +2551,14 @@ _Py_DumpExtensionModules(int fd, PyInterpreterState *interp)
// memory cannot be allocated on the heap in a signal handler.
// Iterate on the dict instead.
PyObject *stdlib_module_names = NULL;
- pos = 0;
- while (PyDict_Next(interp->sysdict, &pos, &key, &value)) {
- if (PyUnicode_Check(key)
- && PyUnicode_CompareWithASCIIString(key, "stdlib_module_names") == 0) {
- stdlib_module_names = value;
- break;
+ if (interp->sysdict != NULL) {
+ pos = 0;
+ while (PyDict_Next(interp->sysdict, &pos, &key, &value)) {
+ if (PyUnicode_Check(key)
+ && PyUnicode_CompareWithASCIIString(key, "stdlib_module_names") == 0) {
+ stdlib_module_names = value;
+ break;
+ }
}
}
// If we failed to get sys.stdlib_module_names or it's not a frozenset,
More information about the Python-checkins
mailing list