From 120b707a6d43452e067daa55a8fdca69f9424abc Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 23 Aug 2019 18:03:08 +0100 Subject: bpo-36763: PyConfig_Read() handles PySys_AddXOption() (GH-15431) PyConfig_Read() is now responsible to handle early calls to PySys_AddXOption() and PySys_AddWarnOption(). Options added by PySys_AddXOption() are now handled the same way than PyConfig.xoptions and command line -X options. For example, PySys_AddXOption(L"faulthandler") enables faulthandler as expected. --- Python/initconfig.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'Python/initconfig.c') diff --git a/Python/initconfig.c b/Python/initconfig.c index b706f4cb85..87dea5ee05 100644 --- a/Python/initconfig.c +++ b/Python/initconfig.c @@ -2069,6 +2069,7 @@ config_init_warnoptions(PyConfig *config, /* The priority order for warnings configuration is (highest precedence * first): * + * - early PySys_AddWarnOption() calls * - the BytesWarning filter, if needed ('-b', '-bb') * - any '-W' command line options; then * - the 'PYTHONWARNINGS' environment variable; then @@ -2124,6 +2125,13 @@ config_init_warnoptions(PyConfig *config, return status; } } + + /* Handle early PySys_AddWarnOption() calls */ + status = _PySys_ReadPreinitWarnOptions(config); + if (_PyStatus_EXCEPTION(status)) { + return status; + } + return _PyStatus_OK(); } @@ -2293,7 +2301,8 @@ config_read_cmdline(PyConfig *config) } status = config_init_warnoptions(config, - &cmdline_warnoptions, &env_warnoptions); + &cmdline_warnoptions, + &env_warnoptions); if (_PyStatus_EXCEPTION(status)) { goto done; } @@ -2403,6 +2412,12 @@ PyConfig_Read(PyConfig *config) goto done; } + /* Handle early PySys_AddXOption() calls */ + status = _PySys_ReadPreinitXOptions(config); + if (_PyStatus_EXCEPTION(status)) { + goto done; + } + status = config_read(config); if (_PyStatus_EXCEPTION(status)) { goto done; -- cgit v1.2.1