libstdc++: Fix build failure due to missing <langinfo.h> [PR98374]
authorPatrick Palka <ppalka@redhat.com>
Fri, 18 Dec 2020 16:52:17 +0000 (11:52 -0500)
committerPatrick Palka <ppalka@redhat.com>
Fri, 18 Dec 2020 16:52:17 +0000 (11:52 -0500)
commitd7bab388b818fc21dbb9111311e114ae33e11fff
treeabbd0e59977691d8178e2eab58f72ee38ef30bde
parent266d74647567e610cc6fd6fccb7db31081f538e2
libstdc++: Fix build failure due to missing <langinfo.h> [PR98374]

This should fix a build failure on Windows which lacks <langinfo.h>,
from which we use nl_langinfo() to obtain the radix character of the
current locale.  (We can't use the more portable localeconv() from
<clocale> to obtain the radix character of the current locale here
because it's not thread-safe, unfortunately.)

This change means that on Windows and other such platforms, we'll just
always assume the radix character used by printf is '.' when formatting
a long double through it.

libstdc++-v3/ChangeLog:

PR libstdc++/98374
* src/c++17/floating_to_chars.cc: Guard include of <langinfo.h>
with __has_include.
(__floating_to_chars_precision) [!defined(RADIXCHAR)]: Don't
attempt to obtain the radix character of the current locale,
just assume it's '.'.
libstdc++-v3/src/c++17/floating_to_chars.cc