From 66ee69932410b12ae0a33d337cb627f63bcb033c Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Mon, 2 Jan 2017 21:09:16 +0000 Subject: [PATCH] win32: temporarily disable setting locale on 14+ The locale structures have been made opaque in CRT 14+. This currently prevents building libc++ for Windows. We can re-enable this in the future when we have replicated the structure to access the private field for the name (unless there exists a better supported mechanism to query the name of a locale given the locale_t). git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@290835 91177308-0d34-0410-b5e6-96231b3b80d8 --- src/support/win32/locale_win32.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/support/win32/locale_win32.cpp b/src/support/win32/locale_win32.cpp index 730045110..ee1381117 100644 --- a/src/support/win32/locale_win32.cpp +++ b/src/support/win32/locale_win32.cpp @@ -13,6 +13,8 @@ #include #include +#include + typedef _VSTD::remove_pointer::type __locale_struct; typedef _VSTD::unique_ptr<__locale_struct, decltype(&uselocale)> __locale_raii; @@ -29,7 +31,9 @@ locale_t uselocale( locale_t newloc ) // uselocale sets the thread's locale by definition, so unconditionally use thread-local locale _configthreadlocale( _ENABLE_PER_THREAD_LOCALE ); // uselocale sets all categories +#if _VC_CRT_MAJOR_VERSION < 14 setlocale( LC_ALL, newloc->locinfo->lc_category[LC_ALL].locale ); +#endif // uselocale returns the old locale_t return old_locale; }