From e1b29950bf751381538e3c8ea6a3e0a98d01dbfb Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 30 Oct 2018 14:31:42 +0100 Subject: bpo-32030: Make _PySys_AddXOptionWithError() private (GH-10236) Make _PySys_AddXOptionWithError() and _PySys_AddWarnOptionWithError() functions private again. They are no longer needed to initialize Python: _PySys_EndInit() is now responsible to add these options instead. Moreover, PySys_AddWarnOptionUnicode() now clears the exception on failure if possible. --- Include/sysmodule.h | 5 ----- Python/sysmodule.c | 11 ++++++++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Include/sysmodule.h b/Include/sysmodule.h index 719ecfc..c5547ff 100644 --- a/Include/sysmodule.h +++ b/Include/sysmodule.h @@ -37,11 +37,6 @@ PyAPI_FUNC(PyObject *) PySys_GetXOptions(void); PyAPI_FUNC(size_t) _PySys_GetSizeOf(PyObject *); #endif -#ifdef Py_BUILD_CORE -PyAPI_FUNC(int) _PySys_AddXOptionWithError(const wchar_t *s); -PyAPI_FUNC(int) _PySys_AddWarnOptionWithError(PyObject *option); -#endif - #ifdef __cplusplus } #endif diff --git a/Python/sysmodule.c b/Python/sysmodule.c index f88b273..9579eae 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -1807,7 +1807,7 @@ PySys_ResetWarnOptions(void) PyList_SetSlice(warnoptions, 0, PyList_GET_SIZE(warnoptions), NULL); } -int +static int _PySys_AddWarnOptionWithError(PyObject *option) { PyObject *warnoptions = get_warnoptions(); @@ -1823,7 +1823,12 @@ _PySys_AddWarnOptionWithError(PyObject *option) void PySys_AddWarnOptionUnicode(PyObject *option) { - (void)_PySys_AddWarnOptionWithError(option); + if (_PySys_AddWarnOptionWithError(option) < 0) { + /* No return value, therefore clear error state if possible */ + if (_PyThreadState_UncheckedGet()) { + PyErr_Clear(); + } + } } void @@ -1877,7 +1882,7 @@ get_xoptions(void) return xoptions; } -int +static int _PySys_AddXOptionWithError(const wchar_t *s) { PyObject *name = NULL, *value = NULL; -- cgit v0.12