Skip to content

Commit

Permalink
bpo-36763: Use PyConfig_Clear() (pythonGH-14445)
Browse files Browse the repository at this point in the history
Stop using "static PyConfig", PyConfig must now always use
dynamically allocated strings: use PyConfig_SetString(),
PyConfig_SetArgv() and PyConfig_Clear().
  • Loading branch information
vstinner authored Jul 1, 2019
1 parent e6b64b7 commit 6731002
Show file tree
Hide file tree
Showing 4 changed files with 151 additions and 186 deletions.
15 changes: 12 additions & 3 deletions Lib/test/test_embed.py
Original file line number Diff line number Diff line change
Expand Up @@ -695,10 +695,19 @@ def test_init_from_config(self):

'pycache_prefix': 'conf_pycache_prefix',
'program_name': './conf_program_name',
'argv': ['-c', 'arg2'],
'argv': ['-c', 'arg2', ],
'parse_argv': 1,
'xoptions': ['xoption1=3', 'xoption2=', 'xoption3'],
'warnoptions': ['error::ResourceWarning', 'default::BytesWarning'],
'xoptions': [
'config_xoption1=3',
'config_xoption2=',
'config_xoption3',
'cmdline_xoption',
],
'warnoptions': [
'config_warnoption',
'cmdline_warnoption',
'default::BytesWarning',
],
'run_command': 'pass\n',

'site_import': 0,
Expand Down
12 changes: 8 additions & 4 deletions Modules/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ pymain_init(const _PyArgv *args)
PyConfig config;
status = PyConfig_InitPythonConfig(&config);
if (_PyStatus_EXCEPTION(status)) {
return status;
goto done;
}

/* pass NULL as the config: config is read from command line arguments,
Expand All @@ -74,14 +74,18 @@ pymain_init(const _PyArgv *args)
status = PyConfig_SetArgv(&config, args->argc, args->wchar_argv);
}
if (_PyStatus_EXCEPTION(status)) {
return status;
goto done;
}

status = Py_InitializeFromConfig(&config);
if (_PyStatus_EXCEPTION(status)) {
return status;
goto done;
}
return _PyStatus_OK();
status = _PyStatus_OK();

done:
PyConfig_Clear(&config);
return status;
}


Expand Down
2 changes: 1 addition & 1 deletion Programs/_freeze_importlib.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ main(int argc, char *argv[])
config.site_import = 0;

status = PyConfig_SetString(&config, &config.program_name,
L"./_freeze_importlib");
L"./_freeze_importlib");
if (PyStatus_Exception(status)) {
PyConfig_Clear(&config);
Py_ExitStatusException(status);
Expand Down
Loading

0 comments on commit 6731002

Please sign in to comment.