libstdc++/112351 - deal with __gthread_once failure during locale init
commit7562f089a190953b8ef615b90b7b0520e812a930
authorRichard Biener <rguenther@suse.de>
Mon, 6 Nov 2023 10:31:40 +0000 (6 11:31 +0100)
committerRichard Biener <rguenther@suse.de>
Tue, 7 Nov 2023 12:55:07 +0000 (7 13:55 +0100)
treed49da9b72ebd5d337c375695579cc391662b0081
parentdd5c3ca98a86e04a316b3d90dadcfcb2b171760b
libstdc++/112351 - deal with __gthread_once failure during locale init

The following makes the C++98 locale init path follow the way the
C++11 performs initialization.  This way we deal with pthread_once
failing, falling back to non-threadsafe initialization which, given we
initialize from the library, should be serialized by the dynamic
loader already.

PR libstdc++/112351
libstdc++-v3/
* src/c++98/locale.cc (locale::facet::_S_initialize_once):
Check whether _S_c_locale is already initialized.
(locale::facet::_S_get_c_locale): Always perform non-threadsafe
init when threadsafe init failed.
libstdc++-v3/src/c++98/locale.cc