summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Snow <ericsnowcurrently@gmail.com>2021-10-14 20:48:32 (GMT)
committerGitHub <noreply@github.com>2021-10-14 20:48:32 (GMT)
commit0bbea0723ee07f9d7ad9745f0e1875718ef38715 (patch)
tree0bbf9521b1a68f11d7696ac57da990f220c37414
parent3cc56c828d2d8f8659ea49447234bf0d2b87cd64 (diff)
downloadcpython-0bbea0723ee07f9d7ad9745f0e1875718ef38715.zip
cpython-0bbea0723ee07f9d7ad9745f0e1875718ef38715.tar.gz
cpython-0bbea0723ee07f9d7ad9745f0e1875718ef38715.tar.bz2
bpo-45471: Do not set PyConfig.stdlib_dir in Py_SetPythonHome(). (gh-28954)
The change in gh-28586 (bpo-45211) should not have included code to set _Py_path_config.stdlib_dir in Py_SetPythonHome(). We fix that here. https://bugs.python.org/issue45471
-rw-r--r--Lib/test/test_embed.py7
-rw-r--r--Python/pathconfig.c5
2 files changed, 7 insertions, 5 deletions
diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py
index 41e0920..4cbb4c2 100644
--- a/Lib/test/test_embed.py
+++ b/Lib/test/test_embed.py
@@ -1247,6 +1247,11 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
self.fail(f"Unable to find home in {paths!r}")
prefix = exec_prefix = home
+ if MS_WINDOWS:
+ stdlib = os.path.join(home, sys.platlibdir)
+ else:
+ version = f'{sys.version_info.major}.{sys.version_info.minor}'
+ stdlib = os.path.join(home, sys.platlibdir, f'python{version}')
expected_paths = self.module_search_paths(prefix=home, exec_prefix=home)
config = {
@@ -1257,7 +1262,7 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
'exec_prefix': exec_prefix,
'base_exec_prefix': exec_prefix,
'pythonpath_env': paths_str,
- 'stdlib_dir': home,
+ 'stdlib_dir': stdlib,
}
self.default_program_name(config)
env = {'TESTHOME': home, 'PYTHONPATH': paths_str}
diff --git a/Python/pathconfig.c b/Python/pathconfig.c
index 2ebb9d3..ad22222 100644
--- a/Python/pathconfig.c
+++ b/Python/pathconfig.c
@@ -530,13 +530,10 @@ Py_SetPythonHome(const wchar_t *home)
PyMem_RawFree(_Py_path_config.home);
_Py_path_config.home = _PyMem_RawWcsdup(home);
- if (_Py_path_config.home != NULL) {
- _Py_path_config.stdlib_dir = _PyMem_RawWcsdup(home);
- }
PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
- if (_Py_path_config.home == NULL || _Py_path_config.stdlib_dir == NULL) {
+ if (_Py_path_config.home == NULL) {
path_out_of_memory(__func__);
}
}