diff options
author | Bo Lindbergh <blgl@stacken.kth.se> | 2010-07-05 01:31:01 +0200 |
---|---|---|
committer | David Golden <dagolden@cpan.org> | 2010-07-06 08:01:47 -0400 |
commit | a674e8db187f4e33b2e6b9341cc0e30fbcf75bd2 (patch) | |
tree | 2d8b986c47f3f1b308aaf815684f073e049ab0f3 | |
parent | 333f87f24de2f15740185612410ef911ccfed6a3 (diff) | |
download | perl-a674e8db187f4e33b2e6b9341cc0e30fbcf75bd2.tar.gz |
Code for allowing uppercase X/B in hexadecimal/binary numbers (#76296).
Signed-off-by: David Golden <dagolden@cpan.org>
-rw-r--r-- | numeric.c | 8 | ||||
-rw-r--r-- | pp.c | 4 | ||||
-rw-r--r-- | toke.c | 4 |
3 files changed, 8 insertions, 8 deletions
@@ -153,11 +153,11 @@ Perl_grok_bin(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) for compatibility silently suffer "b" and "0b" as valid binary numbers. */ if (len >= 1) { - if (s[0] == 'b') { + if (s[0] == 'b' || s[0] == 'B') { s++; len--; } - else if (len >= 2 && s[0] == '0' && s[1] == 'b') { + else if (len >= 2 && s[0] == '0' && (s[1] == 'b' || s[1] == 'B')) { s+=2; len-=2; } @@ -269,11 +269,11 @@ Perl_grok_hex(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) for compatibility silently suffer "x" and "0x" as valid hex numbers. */ if (len >= 1) { - if (s[0] == 'x') { + if (s[0] == 'x' || s[0] == 'X') { s++; len--; } - else if (len >= 2 && s[0] == '0' && s[1] == 'x') { + else if (len >= 2 && s[0] == '0' && (s[1] == 'x' || s[1] == 'X')) { s+=2; len-=2; } @@ -3067,11 +3067,11 @@ PP(pp_oct) tmps++, len--; if (*tmps == '0') tmps++, len--; - if (*tmps == 'x') { + if (*tmps == 'x' || *tmps == 'X') { hex: result_uv = grok_hex (tmps, &len, &flags, &result_nv); } - else if (*tmps == 'b') + else if (*tmps == 'b' || *tmps == 'B') result_uv = grok_bin (tmps, &len, &flags, &result_nv); else result_uv = grok_oct (tmps, &len, &flags, &result_nv); @@ -12978,11 +12978,11 @@ Perl_scan_num(pTHX_ const char *start, YYSTYPE* lvalp) const char *base, *Base, *max; /* check for hex */ - if (s[1] == 'x') { + if (s[1] == 'x' || s[1] == 'X') { shift = 4; s += 2; just_zero = FALSE; - } else if (s[1] == 'b') { + } else if (s[1] == 'b' || s[1] == 'B') { shift = 1; s += 2; just_zero = FALSE; |