std.regex: bug or something special?
Dmitry Olshansky
dmitry.olsh at gmail.com
Thu Feb 14 10:32:08 PST 2013
14-Feb-2013 22:24, Lubos Pintes пишет:
> Hi,
> I am reading std.regex. I found the following code on line 671:
> else if('A' <= current && current <= 'Z')
> val = val * 16 + current - 'A' + 10;
>
> Hex digits are parsed there. So unles this is something special, this is
> a bug. Because for example what 'J' would mean in this context?
A bug. Especially considering the full source:
if('0' <= current && current <= '9')
val = val * 16 + current - '0';
else if('a' <= current && current <= 'f')
val = val * 16 + current -'a' + 10;
else if('A' <= current && current <= 'Z')
val = val * 16 + current - 'A' + 10;
I'd say file it or better yet submit a pull with a unittest that
presently does something fishy. For instance "\u00JJ" would parse and
match m-hm 'J'-'A' * 16 + 'J' - 'A' where it shouldn't parse in the
first place.
--
Dmitry Olshansky
More information about the Digitalmars-d-learn
mailing list