From 73c39b3ab63bead87b77a02eed3f01194a95bb50 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Fri, 4 Mar 2016 23:10:04 +0900 Subject: [PATCH 3/4] Fix use of locales for VS 2015 lc_codepage is a flag missing from locale.h, causing this code path introduced in VS 2012 to fail. Perhaps there is a reason for this field to have been clobbered, but let's fall back to the pre-VS-2012 code parsing directly LC_TYPE to get the codepage wanted. --- src/port/chklocale.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/port/chklocale.c b/src/port/chklocale.c index a551fdc..a7d88fb 100644 --- a/src/port/chklocale.c +++ b/src/port/chklocale.c @@ -203,7 +203,16 @@ win32_langinfo(const char *ctype) { char *r = NULL; -#if (_MSC_VER >= 1700) + /* + * lc_codepage is correctly declared in Visual Studio 2012 and 2013. + * However in VS 2015 this flag is missing from locale.h, visibly this + * is an error of refactoring from Microsoft that is at the origin of + * this missing field, causing a compilation failure in this code path. + * Hence, it is more reliable to fall back to other code path grabbing + * the codepage from the ctype name itself. If VS gets back this field + * in the future, we may want to relax the use of _create_locale here. + */ +#if (_MSC_VER >= 1700) && (_MSC_VER <= 1800) _locale_t loct = NULL; loct = _create_locale(LC_CTYPE, ctype); -- 2.7.2