mirror of
https://github.com/python/cpython.git
synced 2025-08-30 13:38:43 +00:00
bpo-34725: Adds _Py_SetProgramFullPath so embedders may override sys.executable (GH-9860)
This commit is contained in:
parent
689d555ec1
commit
177a41a07b
6 changed files with 74 additions and 33 deletions
|
@ -662,6 +662,23 @@ config_init_program_name(_PyCoreConfig *config)
|
|||
return _Py_INIT_OK();
|
||||
}
|
||||
|
||||
static _PyInitError
|
||||
config_init_executable(_PyCoreConfig *config)
|
||||
{
|
||||
assert(config->executable == NULL);
|
||||
|
||||
/* If Py_SetProgramFullPath() was called, use its value */
|
||||
const wchar_t *program_full_path = _Py_path_config.program_full_path;
|
||||
if (program_full_path != NULL) {
|
||||
config->executable = _PyMem_RawWcsdup(program_full_path);
|
||||
if (config->executable == NULL) {
|
||||
return _Py_INIT_NO_MEMORY();
|
||||
}
|
||||
return _Py_INIT_OK();
|
||||
}
|
||||
|
||||
return _Py_INIT_OK();
|
||||
}
|
||||
|
||||
static const wchar_t*
|
||||
config_get_xoption(const _PyCoreConfig *config, wchar_t *name)
|
||||
|
@ -1370,6 +1387,13 @@ _PyCoreConfig_Read(_PyCoreConfig *config)
|
|||
}
|
||||
}
|
||||
|
||||
if (config->executable == NULL) {
|
||||
err = config_init_executable(config);
|
||||
if (_Py_INIT_FAILED(err)) {
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
||||
if (config->utf8_mode < 0 || config->coerce_c_locale < 0) {
|
||||
config_init_locale(config);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue