[patch] Re: Implementation errors in strtol()
Andrey Chernov
ache at nagual.pp.ru
Thu Jan 20 14:11:56 PST 2005
On Fri, Jan 21, 2005 at 12:58:07AM +0300, Andrey Chernov wrote:
> "If the value of base is 16, the characters 0x or 0X may optionally
> ^^^^^^^^^^^
> precede the sequence of letters and digits, following the sign if
> present."
Here is untested patch to fix the problem:
--- strtol.c.bak Fri Jan 21 01:06:06 2005
+++ strtol.c Fri Jan 21 01:09:30 2005
@@ -76,7 +76,11 @@
c = *s++;
}
if ((base == 0 || base == 16) &&
- c == '0' && (*s == 'x' || *s == 'X')) {
+ c == '0' && (*s == 'x' || *s == 'X') &&
+ (s[1] >= 'a' && s[1] <= 'f' ||
+ s[1] >= 'A' && s[1] <= 'F' ||
+ s[1] >= '0' && s[1] <= '9')
+ ) {
c = s[1];
s += 2;
base = 16;
--
http://ache.pp.ru/
More information about the freebsd-current
mailing list