]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Make __from_chars_alnum_to_val conversion explicit
authorMarco Falke <falke.marco@gmail.com>
Tue, 19 Jul 2022 09:10:39 +0000 (10:10 +0100)
committerJonathan Wakely <jwakely@redhat.com>
Thu, 21 Jul 2022 08:57:25 +0000 (09:57 +0100)
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)

libstdc++-v3/include/std/charconv

index 218813e4797f3a02de57e41f2bea462d855beec9..533320ea08521982eafc82511e75fc733a7265eb 100644 (file)
@@ -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