On 05/05/21 22:14 +0100, Jonathan Wakely wrote:
On 05/05/21 21:57 +0200, François Dumont via Libstdc++ wrote:
On 05/05/21 2:01 pm, Jonathan Wakely via Libstdc++ wrote:
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.
unsigned char __c = *__first;
- if (std::isdigit(__c))
+ if (std::isdigit(static_cast<unsigned char>(__c)))
I am very curious to know what this static_cast<unsigned char> does
on __c which is already unsigned char ? If it does I'll just start
to hate C++ :-)
Maybe you wanted to put it on the previous *__first ?
Ugh, yes, but it's not even needed there because the implicit
conversion is fine.
We do need to fix the isspace calls in src/c++11/debug.cc but this one
was already correct. Thanks!
I've reverted that useless change, thanks for noticing it.