Fix and speedup __libcpp_locale_guard on Windows
authorThomas Anderson <thomasanderson@google.com>
Wed, 27 Mar 2019 18:09:30 +0000 (18:09 +0000)
committerThomas Anderson <thomasanderson@google.com>
Wed, 27 Mar 2019 18:09:30 +0000 (18:09 +0000)
commit24812d8ac42e0c11f9c185282e4e4cc1d9b067a6
tree4810f1278816e657851557610b9d44d908c8bbfd
parent7462303e0680d36ff856c54707489474f717e83f
Fix and speedup __libcpp_locale_guard on Windows

The old implementation assumed the POSIX `setlocale()` API where the old
locale is returned.  On Windows, the _new_ locale is returned.  This meant
that `__libcpp_locale_guard` wasn't resetting the locale on destruction.

The new implementation fixes the above issue and takes advantage of
`setlocale(LC_ALL)` to reduce the number of calls, and also avoids setting
the locale at all if it's not necessary.

Differential Revision: https://reviews.llvm.org/D59572

llvm-svn: 357104
libcxx/include/__locale