[committed] libstdc++: Use unsigned char argument to std::isdigit

Jonathan Wakely jwakely@redhat.com
Wed May 5 21:14:34 GMT 2021


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!




More information about the Libstdc++ mailing list