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>
Tue, 19 Jul 2022 13:56:42 +0000 (14:56 +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.

libstdc++-v3/include/std/charconv

index 218813e..533320e 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