Tested powerpc64le-linux (and x86_64-linux clang), pushed to trunk.

All writes into the allocated buffer need to be via traits_type::assign
to begin lifetimes.

libstdc++-v3/ChangeLog:

        PR libstdc++/103295
        * include/bits/basic_string.tcc (_M_construct): Use the
        traits assign member to write into allcoated memory.
---
 libstdc++-v3/include/bits/basic_string.tcc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/basic_string.tcc 
b/libstdc++-v3/include/bits/basic_string.tcc
index 374406c0e13..6f619a08f70 100644
--- a/libstdc++-v3/include/bits/basic_string.tcc
+++ b/libstdc++-v3/include/bits/basic_string.tcc
@@ -201,7 +201,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
                _M_data(__another);
                _M_capacity(__capacity);
              }
-           _M_data()[__len++] = *__beg;
+           traits_type::assign(_M_data()[__len++], *__beg);
            ++__beg;
          }
 
-- 
2.31.1

Reply via email to