[gcc r14-1572] libstdc++: Do not assume existence of char8_t codecvt facet

Jonathan Wakely redi@gcc.gnu.org
Tue Jun 6 11:44:04 GMT 2023


https://gcc.gnu.org/g:3d9b3ddb5fc9087c17645d53e6bcb1881e1955a4

commit r14-1572-g3d9b3ddb5fc9087c17645d53e6bcb1881e1955a4
Author: Joseph Faulls <Joseph.Faulls@imgtec.com>
Date:   Fri Jun 2 15:44:48 2023 +0000

    libstdc++: Do not assume existence of char8_t codecvt facet
    
    It is not required that codecvt<char8_t, char, mbstate_t> facet be
    supported by the locale, nor is it added as part of the default locale.
    This can lead to dangerous behaviour when static_cast.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/locale_classes.tcc: Remove check for
            codecvt<char8_t, char, mbstate_t> facet.

Diff:
---
 libstdc++-v3/include/bits/locale_classes.tcc | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/libstdc++-v3/include/bits/locale_classes.tcc b/libstdc++-v3/include/bits/locale_classes.tcc
index 94838cd7796..2351dd5bcfb 100644
--- a/libstdc++-v3/include/bits/locale_classes.tcc
+++ b/libstdc++-v3/include/bits/locale_classes.tcc
@@ -129,9 +129,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       _GLIBCXX_STD_FACET(time_put<wchar_t>);
       _GLIBCXX_STD_FACET(messages<wchar_t>);
 #endif
-#ifdef _GLIBCXX_USE_CHAR8_T
-      _GLIBCXX_STD_FACET(codecvt<char8_t, char, mbstate_t>);
-#endif
 #if __cplusplus >= 201103L
       _GLIBCXX_STD_FACET(codecvt<char16_t, char, mbstate_t>);
       _GLIBCXX_STD_FACET(codecvt<char32_t, char, mbstate_t>);


More information about the Gcc-cvs mailing list