diff options
author | David Dyck <david.dyck@fluke.com> | 2001-04-04 06:27:15 -0700 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2001-04-05 22:23:06 +0000 |
commit | 6f894eade1cb03fcc18e4faa9e39f693bad68f34 (patch) | |
tree | d51374c605b9512b3aa9179ed1984445fdf9d5fb | |
parent | 793e2a70013bc23954e40bce02eca6d093caef68 (diff) | |
download | perl-6f894eade1cb03fcc18e4faa9e39f693bad68f34.tar.gz |
bleadperl / hex ignores variable length and/or tr doesn't null terminate ( with patch)
Message-ID: <Pine.LNX.4.30.0104041325310.25358-100000@dd.tc.fluke.com>
p4raw-id: //depot/perl@9573
-rw-r--r-- | pp.c | 22 |
1 files changed, 11 insertions, 11 deletions
@@ -2667,11 +2667,11 @@ PP(pp_hex) dSP; dTARGET; char *tmps; STRLEN argtype; - STRLEN n_a; + STRLEN len; - tmps = POPpx; + tmps = (SvPVx(POPs, len)); argtype = 1; /* allow underscores */ - XPUSHn(scan_hex(tmps, 99, &argtype)); + XPUSHn(scan_hex(tmps, len, &argtype)); RETURN; } @@ -2681,20 +2681,20 @@ PP(pp_oct) NV value; STRLEN argtype; char *tmps; - STRLEN n_a; + STRLEN len; - tmps = POPpx; - while (*tmps && isSPACE(*tmps)) - tmps++; + tmps = (SvPVx(POPs, len)); + while (*tmps && len && isSPACE(*tmps)) + tmps++, len--; if (*tmps == '0') - tmps++; + tmps++, len--; argtype = 1; /* allow underscores */ if (*tmps == 'x') - value = scan_hex(++tmps, 99, &argtype); + value = scan_hex(++tmps, --len, &argtype); else if (*tmps == 'b') - value = scan_bin(++tmps, 99, &argtype); + value = scan_bin(++tmps, --len, &argtype); else - value = scan_oct(tmps, 99, &argtype); + value = scan_oct(tmps, len, &argtype); XPUSHn(value); RETURN; } |