diff options
Diffstat (limited to 'Python/pathconfig.c')
-rw-r--r-- | Python/pathconfig.c | 71 |
1 files changed, 23 insertions, 48 deletions
diff --git a/Python/pathconfig.c b/Python/pathconfig.c index 33abaddc1b5..92360c1bb02 100644 --- a/Python/pathconfig.c +++ b/Python/pathconfig.c @@ -4,7 +4,7 @@ #include "pycore_initconfig.h" // _PyStatus_OK() #include "pycore_fileutils.h" // _Py_wgetcwd() #include "pycore_pathconfig.h" -#include "pycore_pymem.h" // _PyMem_SetDefaultAllocator() +#include "pycore_pymem.h" // _PyMem_DefaultRawFree() #include <wchar.h> #include "marshal.h" // PyMarshal_ReadObjectFromString @@ -54,12 +54,9 @@ _PyPathConfig_GetGlobalModuleSearchPath(void) void _PyPathConfig_ClearGlobal(void) { - PyMemAllocatorEx old_alloc; - _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc); - #define CLEAR(ATTR) \ do { \ - PyMem_RawFree(_Py_path_config.ATTR); \ + _PyMem_DefaultRawFree(_Py_path_config.ATTR); \ _Py_path_config.ATTR = NULL; \ } while (0) @@ -74,8 +71,6 @@ _PyPathConfig_ClearGlobal(void) _Py_path_config._is_python_build = 0; #undef CLEAR - - PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc); } PyStatus @@ -126,14 +121,11 @@ done: PyStatus _PyPathConfig_UpdateGlobal(const PyConfig *config) { - PyMemAllocatorEx old_alloc; - _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc); - #define COPY(ATTR) \ do { \ if (config->ATTR) { \ - PyMem_RawFree(_Py_path_config.ATTR); \ - _Py_path_config.ATTR = _PyMem_RawWcsdup(config->ATTR); \ + _PyMem_DefaultRawFree(_Py_path_config.ATTR); \ + _Py_path_config.ATTR = _PyMem_DefaultRawWcsdup(config->ATTR); \ if (!_Py_path_config.ATTR) goto error; \ } \ } while (0) @@ -141,8 +133,8 @@ _PyPathConfig_UpdateGlobal(const PyConfig *config) #define COPY2(ATTR, SRCATTR) \ do { \ if (config->SRCATTR) { \ - PyMem_RawFree(_Py_path_config.ATTR); \ - _Py_path_config.ATTR = _PyMem_RawWcsdup(config->SRCATTR); \ + _PyMem_DefaultRawFree(_Py_path_config.ATTR); \ + _Py_path_config.ATTR = _PyMem_DefaultRawWcsdup(config->SRCATTR); \ if (!_Py_path_config.ATTR) goto error; \ } \ } while (0) @@ -165,9 +157,9 @@ _PyPathConfig_UpdateGlobal(const PyConfig *config) #undef COPY2 #undef COPY_INT - PyMem_RawFree(_Py_path_config.module_search_path); + _PyMem_DefaultRawFree(_Py_path_config.module_search_path); _Py_path_config.module_search_path = NULL; - PyMem_RawFree(_Py_path_config.calculated_module_search_path); + _PyMem_DefaultRawFree(_Py_path_config.calculated_module_search_path); _Py_path_config.calculated_module_search_path = NULL; do { @@ -176,7 +168,7 @@ _PyPathConfig_UpdateGlobal(const PyConfig *config) cch += 1 + wcslen(config->module_search_paths.items[i]); } - wchar_t *path = (wchar_t*)PyMem_RawMalloc(sizeof(wchar_t) * cch); + wchar_t *path = (wchar_t*)_PyMem_DefaultRawMalloc(sizeof(wchar_t) * cch); if (!path) { goto error; } @@ -194,11 +186,9 @@ _PyPathConfig_UpdateGlobal(const PyConfig *config) _Py_path_config.calculated_module_search_path = path; } while (0); - PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc); return _PyStatus_OK(); error: - PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc); return _PyStatus_NO_MEMORY(); } @@ -218,29 +208,24 @@ Py_SetPath(const wchar_t *path) return; } - PyMemAllocatorEx old_alloc; - _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc); + _PyMem_DefaultRawFree(_Py_path_config.prefix); + _PyMem_DefaultRawFree(_Py_path_config.exec_prefix); + _PyMem_DefaultRawFree(_Py_path_config.stdlib_dir); + _PyMem_DefaultRawFree(_Py_path_config.module_search_path); + _PyMem_DefaultRawFree(_Py_path_config.calculated_module_search_path); - PyMem_RawFree(_Py_path_config.prefix); - PyMem_RawFree(_Py_path_config.exec_prefix); - PyMem_RawFree(_Py_path_config.stdlib_dir); - PyMem_RawFree(_Py_path_config.module_search_path); - PyMem_RawFree(_Py_path_config.calculated_module_search_path); - - _Py_path_config.prefix = _PyMem_RawWcsdup(L""); - _Py_path_config.exec_prefix = _PyMem_RawWcsdup(L""); + _Py_path_config.prefix = _PyMem_DefaultRawWcsdup(L""); + _Py_path_config.exec_prefix = _PyMem_DefaultRawWcsdup(L""); // XXX Copy this from the new module_search_path? if (_Py_path_config.home != NULL) { - _Py_path_config.stdlib_dir = _PyMem_RawWcsdup(_Py_path_config.home); + _Py_path_config.stdlib_dir = _PyMem_DefaultRawWcsdup(_Py_path_config.home); } else { - _Py_path_config.stdlib_dir = _PyMem_RawWcsdup(L""); + _Py_path_config.stdlib_dir = _PyMem_DefaultRawWcsdup(L""); } - _Py_path_config.module_search_path = _PyMem_RawWcsdup(path); + _Py_path_config.module_search_path = _PyMem_DefaultRawWcsdup(path); _Py_path_config.calculated_module_search_path = NULL; - PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc); - if (_Py_path_config.prefix == NULL || _Py_path_config.exec_prefix == NULL || _Py_path_config.stdlib_dir == NULL @@ -256,18 +241,13 @@ Py_SetPythonHome(const wchar_t *home) { int has_value = home && home[0]; - PyMemAllocatorEx old_alloc; - _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc); - - PyMem_RawFree(_Py_path_config.home); + _PyMem_DefaultRawFree(_Py_path_config.home); _Py_path_config.home = NULL; if (has_value) { - _Py_path_config.home = _PyMem_RawWcsdup(home); + _Py_path_config.home = _PyMem_DefaultRawWcsdup(home); } - PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc); - if (has_value && _Py_path_config.home == NULL) { path_out_of_memory(__func__); } @@ -279,18 +259,13 @@ Py_SetProgramName(const wchar_t *program_name) { int has_value = program_name && program_name[0]; - PyMemAllocatorEx old_alloc; - _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc); - - PyMem_RawFree(_Py_path_config.program_name); + _PyMem_DefaultRawFree(_Py_path_config.program_name); _Py_path_config.program_name = NULL; if (has_value) { - _Py_path_config.program_name = _PyMem_RawWcsdup(program_name); + _Py_path_config.program_name = _PyMem_DefaultRawWcsdup(program_name); } - PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc); - if (has_value && _Py_path_config.program_name == NULL) { path_out_of_memory(__func__); } |