libstdc++: Partially revert r11-5314
authorJonathan Wakely <jwakely@redhat.com>
Fri, 27 Nov 2020 11:00:15 +0000 (11:00 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Fri, 27 Nov 2020 12:25:02 +0000 (12:25 +0000)
commit0d7d69ca4a8c05d883e07ee42058c9c6b0c72370
tree9e5c5f9cd38e1fe61cf7357362ae22b9aa8a5097
parentb6a7b72c6c91cc0d800a603a59e96fbcb07793ba
libstdc++: Partially revert r11-5314

The changes in r11-5314 are broken, because it means we don't use
__gthread_once for the first few initializations, but after the program
becomes multi-threaded we will repeat the initialization, using
__gthread_once once this time. This leads to memory errors.

The use of __is_single_threaded() in locale::id::_M_id() is OK, because
the side effects are the same either way.

libstdc++-v3/ChangeLog:

* src/c++98/locale.cc (locale::facet::_S_get_c_locale()):
Revert change to use __is_single_threaded.
* src/c++98/locale_init.cc (locale::_S_initialize()):
Likewise.
libstdc++-v3/src/c++98/locale.cc
libstdc++-v3/src/c++98/locale_init.cc