[gcc r12-8591] libstdc++: Make __from_chars_alnum_to_val conversion explicit

Jonathan Wakely redi@gcc.gnu.org
Thu Jul 21 11:16:33 GMT 2022


https://gcc.gnu.org/g:0bb30f94ace6be68bd315d03f36b24bbaec2bee7

commit r12-8591-g0bb30f94ace6be68bd315d03f36b24bbaec2bee7
Author: Marco Falke <falke.marco@gmail.com>
Date:   Tue Jul 19 10:10:39 2022 +0100

    libstdc++: Make __from_chars_alnum_to_val conversion explicit
    
    The optimizations from commit r12-8175-ga54137c88061c7 introduced a
    clang integer sanitizer error.
    
    Fix this with an explicit static_cast, similar to the fix for PR 96766.
    
    libstdc++-v3/ChangeLog:
    
            * include/std/charconv (__from_chars_alnum_to_val): Replace
            implicit conversion from int to unsigned char with explicit
            cast.
    
    (cherry picked from commit 20ab3972240aff596a3fa98e9fb09ddc0658fbb3)

Diff:
---
 libstdc++-v3/include/std/charconv | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/charconv b/libstdc++-v3/include/std/charconv
index 218813e4797..533320ea085 100644
--- a/libstdc++-v3/include/std/charconv
+++ b/libstdc++-v3/include/std/charconv
@@ -436,7 +436,7 @@ namespace __detail
     __from_chars_alnum_to_val(unsigned char __c)
     {
       if _GLIBCXX17_CONSTEXPR (_DecOnly)
-	return __c - '0';
+	return static_cast<unsigned char>(__c - '0');
       else
 	{
 	  // This initializer is deliberately made dependent in order to work


More information about the Libstdc++-cvs mailing list