Passing plain char to isdigit is undefined if the value is negative. libstdc++-v3/ChangeLog:
* include/std/charconv (__from_chars_alnum): Pass unsigned char to std::isdigit. Tested powerpc64le-linux. Committed to trunk.
commit d0d6ca019717305df0ef41e3fe1da48f7f561fac Author: Jonathan Wakely <jwak...@redhat.com> Date: Wed May 5 11:19:55 2021 libstdc++: Use unsigned char argument to std::isdigit Passing plain char to isdigit is undefined if the value is negative. libstdc++-v3/ChangeLog: * include/std/charconv (__from_chars_alnum): Pass unsigned char to std::isdigit. diff --git a/libstdc++-v3/include/std/charconv b/libstdc++-v3/include/std/charconv index 193702e677a..571be075a6b 100644 --- a/libstdc++-v3/include/std/charconv +++ b/libstdc++-v3/include/std/charconv @@ -565,7 +565,7 @@ namespace __detail while (__first != __last) { unsigned char __c = *__first; - if (std::isdigit(__c)) + if (std::isdigit(static_cast<unsigned char>(__c))) __c -= '0'; else {