[3.8] bpo-38324: Fix test__locale.py Windows failures (GH-20529) by miss-islington · Pull Request #22813 · python/cpython
#define GET_LOCALE_STRING(ATTR) PyUnicode_DecodeLocale(lc->ATTR, NULL) #else /* MS_WINDOWS */ /* Use _W_* fields of Windows struct lconv */ #define GET_LOCALE_STRING(ATTR) PyUnicode_FromWideChar(lc->_W_ ## ATTR, -1) #endif /* MS_WINDOWS */
int res = -1;
#define RESULT_STRING(ATTR) \ do { \ PyObject *obj; \ obj = PyUnicode_DecodeLocale(lc->ATTR, NULL); \ obj = GET_LOCALE_STRING(ATTR); \ if (obj == NULL) { \ goto done; \ } \
res = 0;
done: #ifndef MS_WINDOWS if (loc != NULL) { setlocale(LC_CTYPE, oldloc); } PyMem_Free(oldloc); #endif return res; }
#ifdef MS_WINDOWS /* Use _W_* fields of Windows struct lconv */ #define GET_LOCALE_STRING(ATTR) PyUnicode_FromWideChar(lc->_W_ ## ATTR, -1) #else #define GET_LOCALE_STRING(ATTR) PyUnicode_DecodeLocale(lc->ATTR, NULL) #endif #define RESULT_STRING(s)\ do { \ x = PyUnicode_DecodeLocale(lc->s, NULL); \ x = GET_LOCALE_STRING(s); \ RESULT(#s, x); \ } while (0)
/* Numeric information: LC_NUMERIC encoding */ PyObject *decimal_point, *thousands_sep; PyObject *decimal_point = NULL, *thousands_sep = NULL; if (_Py_GetLocaleconvNumeric(lc, &decimal_point, &thousands_sep) < 0) { Py_XDECREF(decimal_point); Py_XDECREF(thousands_sep); goto failed; }
#if defined(HAVE_WCSCOLL)