[Python-checkins] bpo-36763: Remove _PyCoreConfig.dll_path (GH-13402)

Victor Stinner webhook-mailer at python.org
Fri May 17 22:17:06 EDT 2019


https://github.com/python/cpython/commit/410759fba80aded5247b693c60745aa16906f3bb
commit: 410759fba80aded5247b693c60745aa16906f3bb
branch: master
author: Victor Stinner <vstinner at redhat.com>
committer: GitHub <noreply at github.com>
date: 2019-05-18T04:17:01+02:00
summary:

bpo-36763: Remove _PyCoreConfig.dll_path (GH-13402)

files:
M Include/cpython/coreconfig.h
M Include/internal/pycore_pathconfig.h
M Lib/test/test_embed.py
M PC/getpathp.c
M Python/coreconfig.c
M Python/pathconfig.c

diff --git a/Include/cpython/coreconfig.h b/Include/cpython/coreconfig.h
index ca71c15b67d6..a71f16171b73 100644
--- a/Include/cpython/coreconfig.h
+++ b/Include/cpython/coreconfig.h
@@ -353,9 +353,6 @@ typedef struct {
     wchar_t *base_prefix;   /* sys.base_prefix */
     wchar_t *exec_prefix;   /* sys.exec_prefix */
     wchar_t *base_exec_prefix;  /* sys.base_exec_prefix */
-#ifdef MS_WINDOWS
-    wchar_t *dll_path;      /* Windows DLL path */
-#endif
 
     /* --- Parameter only used by Py_Main() ---------- */
 
diff --git a/Include/internal/pycore_pathconfig.h b/Include/internal/pycore_pathconfig.h
index 9eb8e88df767..bee391187cc9 100644
--- a/Include/internal/pycore_pathconfig.h
+++ b/Include/internal/pycore_pathconfig.h
@@ -53,6 +53,10 @@ PyAPI_FUNC(int) _Py_FindEnvConfigValue(
     wchar_t *value,
     size_t value_size);
 
+#ifdef MS_WINDOWS
+extern wchar_t* _Py_GetDLLPath(void);
+#endif
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py
index 6b77a2d1fd8d..5a5419dcfcf5 100644
--- a/Lib/test/test_embed.py
+++ b/Lib/test/test_embed.py
@@ -369,7 +369,6 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
             'legacy_windows_fs_encoding': 0,
         })
         DEFAULT_CORE_CONFIG.update({
-            'dll_path': GET_DEFAULT_CONFIG,
             'legacy_windows_stdio': 0,
         })
 
@@ -466,8 +465,6 @@ def get_expected_config(self, expected_preconfig, expected, env, api,
                 'filesystem_errors': sys.getfilesystemencodeerrors(),
                 'module_search_paths': core_config['module_search_paths'],
             }
-            if sys.platform == 'win32':
-                data['dll_path'] = core_config['dll_path']
 
             data = json.dumps(data)
             data = data.encode('utf-8')
diff --git a/PC/getpathp.c b/PC/getpathp.c
index 64aa1e0d141f..62c42ecefe9e 100644
--- a/PC/getpathp.c
+++ b/PC/getpathp.c
@@ -508,8 +508,8 @@ getpythonregpath(HKEY keyBase, int skipcore)
 #endif /* Py_ENABLE_SHARED */
 
 
-static _PyInitError
-get_dll_path(PyCalculatePath *calculate, _PyPathConfig *config)
+wchar_t*
+_Py_GetDLLPath(void)
 {
     wchar_t dll_path[MAXPATHLEN+1];
     memset(dll_path, 0, sizeof(dll_path));
@@ -525,11 +525,7 @@ get_dll_path(PyCalculatePath *calculate, _PyPathConfig *config)
     dll_path[0] = 0;
 #endif
 
-    config->dll_path = _PyMem_RawWcsdup(dll_path);
-    if (config->dll_path == NULL) {
-        return _Py_INIT_NO_MEMORY();
-    }
-    return _Py_INIT_OK();
+    return _PyMem_RawWcsdup(dll_path);
 }
 
 
@@ -956,9 +952,11 @@ calculate_path_impl(const _PyCoreConfig *core_config,
 {
     _PyInitError err;
 
-    err = get_dll_path(calculate, config);
-    if (_Py_INIT_FAILED(err)) {
-        return err;
+    assert(config->dll_path == NULL);
+
+    config->dll_path = _Py_GetDLLPath();
+    if (config->dll_path == NULL) {
+        return _Py_INIT_NO_MEMORY();
     }
 
     err = get_program_full_path(core_config, calculate, config);
diff --git a/Python/coreconfig.c b/Python/coreconfig.c
index 3678d1240671..470bda870288 100644
--- a/Python/coreconfig.c
+++ b/Python/coreconfig.c
@@ -531,9 +531,6 @@ _PyCoreConfig_Clear(_PyCoreConfig *config)
     CLEAR(config->prefix);
     CLEAR(config->base_prefix);
     CLEAR(config->exec_prefix);
-#ifdef MS_WINDOWS
-    CLEAR(config->dll_path);
-#endif
     CLEAR(config->base_exec_prefix);
 
     CLEAR(config->filesystem_encoding);
@@ -761,9 +758,6 @@ _PyCoreConfig_Copy(_PyCoreConfig *config, const _PyCoreConfig *config2)
     COPY_WSTR_ATTR(prefix);
     COPY_WSTR_ATTR(base_prefix);
     COPY_WSTR_ATTR(exec_prefix);
-#ifdef MS_WINDOWS
-    COPY_WSTR_ATTR(dll_path);
-#endif
     COPY_WSTR_ATTR(base_exec_prefix);
 
     COPY_ATTR(site_import);
@@ -864,9 +858,6 @@ _PyCoreConfig_AsDict(const _PyCoreConfig *config)
     SET_ITEM_WSTR(base_prefix);
     SET_ITEM_WSTR(exec_prefix);
     SET_ITEM_WSTR(base_exec_prefix);
-#ifdef MS_WINDOWS
-    SET_ITEM_WSTR(dll_path);
-#endif
     SET_ITEM_INT(site_import);
     SET_ITEM_INT(bytes_warning);
     SET_ITEM_INT(inspect);
@@ -2355,9 +2346,6 @@ _PyCoreConfig_Read(_PyCoreConfig *config)
         assert(config->base_prefix != NULL);
         assert(config->exec_prefix != NULL);
         assert(config->base_exec_prefix != NULL);
-#ifdef MS_WINDOWS
-        assert(config->dll_path != NULL);
-#endif
     }
     assert(config->filesystem_encoding != NULL);
     assert(config->filesystem_errors != NULL);
diff --git a/Python/pathconfig.c b/Python/pathconfig.c
index c8c69ebad6a0..3d9d3b1b205f 100644
--- a/Python/pathconfig.c
+++ b/Python/pathconfig.c
@@ -214,7 +214,8 @@ _PyCoreConfig_SetPathConfig(const _PyCoreConfig *core_config)
         goto no_memory;
     }
 #ifdef MS_WINDOWS
-    if (copy_wstr(&path_config.dll_path, core_config->dll_path) < 0) {
+    path_config.dll_path = _Py_GetDLLPath();
+    if (path_config.dll_path == NULL) {
         goto no_memory;
     }
 #endif
@@ -322,14 +323,6 @@ _PyCoreConfig_CalculatePathConfig(_PyCoreConfig *config)
         }
     }
 
-#ifdef MS_WINDOWS
-    if (config->dll_path == NULL) {
-        if (copy_wstr(&config->dll_path, path_config.dll_path) < 0) {
-            goto no_memory;
-        }
-    }
-#endif
-
     if (path_config.isolated != -1) {
         config->isolated = path_config.isolated;
     }
@@ -356,9 +349,6 @@ _PyCoreConfig_InitPathConfig(_PyCoreConfig *config)
     if (!config->use_module_search_paths
         || (config->executable == NULL)
         || (config->prefix == NULL)
-#ifdef MS_WINDOWS
-        || (config->dll_path == NULL)
-#endif
         || (config->exec_prefix == NULL))
     {
         _PyInitError err = _PyCoreConfig_CalculatePathConfig(config);
@@ -435,7 +425,7 @@ Py_SetPath(const wchar_t *path)
     new_config.exec_prefix = _PyMem_RawWcsdup(L"");
     alloc_error |= (new_config.exec_prefix == NULL);
 #ifdef MS_WINDOWS
-    new_config.dll_path = _PyMem_RawWcsdup(L"");
+    new_config.dll_path = _Py_GetDLLPath();
     alloc_error |= (new_config.dll_path == NULL);
 #endif
     new_config.module_search_path = _PyMem_RawWcsdup(path);



More information about the Python-checkins mailing list