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
This commit is contained in:
Saleem Abdulrasool
2017-01-02 21:09:16 +00:00
parent 3a1b90a866
commit 66ee699324

View File

@@ -13,6 +13,8 @@
#include <memory>
#include <type_traits>
#include <crtversion.h>
typedef _VSTD::remove_pointer<locale_t>::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;
}