Mail Archives: djgpp/2004/02/24/08:17:43
DJ Delorie <dj AT delorie DOT com> wrote:
> > [#4] The subject sequence is defined as the longest initial
> > subsequence of the input string, starting with the first
> > non-white-space character, that is of the expected form.
> ISO 9899/1999 explicitly allows '-' to be part of the expected form
> for strtoul.
So does C89. It explicitly mentions both signs and digits as allowed
characters in the subject sequence.
> Ok, *that* is a bug. Amusingly enough, glibc 2.3.2 has the same bug.
I don't it's a bug. Not unless they changed this between C89 and C99.
ISO C90 section 7.10.1.6 (strtoul), paragraph 5 says:
If the subject sequence begins with a minus sign, the value resulting
from the conversion is negated.
Since negation is a well-defined operation on unsigned longs, there's
no error involved. In other words: strtoul on "-1" will result in
ULONG_MAX not because an error was detected, but because ULONG_MAX is
the correct result of
-(1UL)
--
Hans-Bernhard Broeker (broeker AT physik DOT rwth-aachen DOT de)
Even if all the snow were burnt, ashes would remain.
- Raw text -