From e3fdf9887934783dd5692982e11c048eb7c97265 Mon Sep 17 00:00:00 2001 From: Gisle Aas Date: Fri, 16 Oct 1998 18:33:12 +0200 Subject: [PATCH] disallow 'x' in hex numbers (except leading '0x') Message-ID: Subject: Re: [PATCH 5.005_52] 'x' is not a legal hex digit p4raw-id: //depot/perl@2054 --- perlvars.h | 2 +- t/op/oct.t | 5 ++--- util.c | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/perlvars.h b/perlvars.h index c79c37d..d42353d 100644 --- a/perlvars.h +++ b/perlvars.h @@ -194,7 +194,7 @@ PERLVAR(Glast_swash_slen, STRLEN) /* constants (these are not literals to facilitate pointer comparisons) */ PERLVARIC(GYes, char *, "1") PERLVARIC(GNo, char *, "") -PERLVARIC(Ghexdigit, char *, "0123456789abcdef0123456789ABCDEFx") +PERLVARIC(Ghexdigit, char *, "0123456789abcdef0123456789ABCDEF") PERLVARIC(Gpatleave, char *, "\\.^$@dDwWsSbB+*?|()-nrtfeaxc0123456789[{]}") PERLVAR(Gspecialsv_list[4],SV *) /* from byterun.h */ diff --git a/t/op/oct.t b/t/op/oct.t index 24b5c43..6623089 100755 --- a/t/op/oct.t +++ b/t/op/oct.t @@ -1,8 +1,6 @@ #!./perl -# $RCSfile: oct.t,v $$Revision: 4.1 $$Date: 92/08/07 18:28:08 $ - -print "1..8\n"; +print "1..9\n"; print +(oct('01234') == 01234) ? "ok" : "not ok", " 1\n"; print +(oct('0x1234') == 0x1234) ? "ok" : "not ok", " 2\n"; @@ -12,3 +10,4 @@ print +(oct('x80000000') == 0x80000000) ? "ok" : "not ok", " 5\n"; print +(hex('80000000') == 0x80000000) ? "ok" : "not ok", " 6\n"; print +(oct('1234') == 668) ? "ok" : "not ok", " 7\n"; print +(hex('1234') == 4660) ? "ok" : "not ok", " 8\n"; +print +(hex('0x1234') == 0x1234) ? "ok" : "not ok", " 9\n"; diff --git a/util.c b/util.c index e47b95d..873fcd8 100644 --- a/util.c +++ b/util.c @@ -2451,7 +2451,7 @@ scan_hex(char *start, I32 len, I32 *retlen) while (len-- && *s) { tmp = strchr((char *) PL_hexdigit, *s++); if (!tmp) { - if (*(s-1) == '_') + if (*(s-1) == '_' || (*(s-1) == 'x' && retval == 0)) continue; else { dTHR; -- 2.7.4