]> git.ipfire.org Git - thirdparty/gcc.git/commit
libstdc++: Fix effects of combining locales [PR108323]
authorJonathan Wakely <jwakely@redhat.com>
Tue, 30 Jan 2024 14:48:28 +0000 (14:48 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Wed, 22 May 2024 22:10:05 +0000 (23:10 +0100)
commit947a9c801e818f412ad4c669a49297c3512b3a6e
tree5e5b648687959794040c3d605e33aaf410ba5f0a
parentb2fdd508d7e63158e9d2a6dd04f901d02900def3
libstdc++: Fix effects of combining locales [PR108323]

This fixes a bug in locale::combine where we fail to meet the standard's
requirement that the result is unnamed. It also implements two library
issues related to the names of combined locales (2295 and 3676).

libstdc++-v3/ChangeLog:

PR libstdc++/108323
* include/bits/locale_classes.tcc (locale(const locale&, Facet*)):
Return a copy of the first argument when the facet pointer is
null, as per LWG 2295.
(locale::combine): Ensure the result is unnamed.
* src/c++11/localename.cc (_M_replace_categories): Ignore
whether the second locale has a name when cat == none, as per
LWG 3676.
* src/c++98/locale.cc (_M_install_facet): Use __builtin_expect
to predict that the facet pointer is non-null.
* testsuite/22_locale/locale/cons/names.cc: New test.
libstdc++-v3/include/bits/locale_classes.tcc
libstdc++-v3/src/c++11/localename.cc
libstdc++-v3/src/c++98/locale.cc
libstdc++-v3/testsuite/22_locale/locale/cons/names.cc [new file with mode: 0644]