]> granicus.if.org Git - python/commitdiff
bpo-36763: Remove _PyCoreConfig.dll_path (GH-13402)
authorVictor Stinner <vstinner@redhat.com>
Sat, 18 May 2019 02:17:01 +0000 (04:17 +0200)
committerGitHub <noreply@github.com>
Sat, 18 May 2019 02:17:01 +0000 (04:17 +0200)
Include/cpython/coreconfig.h
Include/internal/pycore_pathconfig.h
Lib/test/test_embed.py
PC/getpathp.c
Python/coreconfig.c
Python/pathconfig.c

index ca71c15b67d6f9824a12ed701f5a9c80989e4fbd..a71f16171b7334dc0733f8b000ae0b59d647a8f8 100644 (file)
@@ -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() ---------- */
 
index 9eb8e88df767361a71340da9bcf59325334b22c6..bee391187cc97db68fb096659a9433c5227e89d1 100644 (file)
@@ -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
index 6b77a2d1fd8dd95e856a1edf33bcc7ae6f89b36e..5a5419dcfcf57efff8bba4403a2dcc58d39e5a5e 100644 (file)
@@ -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 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
                 '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')
index 64aa1e0d141f0556ddd4a01699645a69ce2d882b..62c42ecefe9e18bdb13ec20dfb962edfc4414f23 100644 (file)
@@ -508,8 +508,8 @@ done:
 #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);
index 3678d12406716977d67bf9a62e4f4c014e8c6df9..470bda870288b56f4325287c62eedcbc27fd356d 100644 (file)
@@ -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);
index c8c69ebad6a032bf6b4d3ef675943a115ad2a8b3..3d9d3b1b205fc9f9fb8b3663cc61a734474a72db 100644 (file)
@@ -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);