From 29fdaa6dcd98bd9740a37b6555b0fa7ac20ab45e Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 12 Oct 2016 13:31:07 +0000 Subject: [be003d570f] TclParseNumber() failed to fully implement TCL_PARSE_OCTAL_ONLY. --- generic/tclStrToD.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/generic/tclStrToD.c b/generic/tclStrToD.c index d05fe5d..b89ce45 100644 --- a/generic/tclStrToD.c +++ b/generic/tclStrToD.c @@ -589,6 +589,9 @@ TclParseNumber( acceptPoint = p; acceptLen = len; if (c == 'x' || c == 'X') { + if (flags & TCL_PARSE_OCTAL_ONLY) { + goto endgame; + } state = ZERO_X; break; } @@ -599,6 +602,9 @@ TclParseNumber( goto zeroo; } if (c == 'b' || c == 'B') { + if (flags & TCL_PARSE_OCTAL_ONLY) { + goto endgame; + } state = ZERO_B; break; } -- cgit v0.12 From 326e0a8fdf312bb1823539ec064b5ecacb3dac58 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 12 Oct 2016 13:38:28 +0000 Subject: Add a test too. --- tests/scan.test | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/scan.test b/tests/scan.test index 109746f..68c44b0 100644 --- a/tests/scan.test +++ b/tests/scan.test @@ -439,6 +439,9 @@ test scan-5.13 {integer scanning and overflow} { test scan-5.14 {integer scanning} { scan 0xff %u } 0 +test scan-5.15 {Bug be003d570f} { + scan 0x40 %o +} 0 test scan-6.1 {floating-point scanning} { set a {}; set b {}; set c {}; set d {} -- cgit v0.12 From 66f257a58823378a79c3fb14169ed308b3b04d29 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 12 Oct 2016 13:46:14 +0000 Subject: [be003d570f] TclParseNumber() failed to fully implement TCL_PARSE_BINARY_ONLY. --- generic/tclStrToD.c | 2 +- tests/scan.test | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/generic/tclStrToD.c b/generic/tclStrToD.c index dc85124..6da6df3 100644 --- a/generic/tclStrToD.c +++ b/generic/tclStrToD.c @@ -630,7 +630,7 @@ TclParseNumber( acceptPoint = p; acceptLen = len; if (c == 'x' || c == 'X') { - if (flags & TCL_PARSE_OCTAL_ONLY) { + if (flags & (TCL_PARSE_OCTAL_ONLY|TCL_PARSE_BINARY_ONLY)) { goto endgame; } state = ZERO_X; diff --git a/tests/scan.test b/tests/scan.test index d814ce9..7540c9c 100644 --- a/tests/scan.test +++ b/tests/scan.test @@ -538,6 +538,9 @@ test scan-5.14 {integer scanning} { test scan-5.15 {Bug be003d570f} { scan 0x40 %o } 0 +test scan-5.16 {Bug be003d570f} { + scan 0x40 %b +} 0 test scan-6.1 {floating-point scanning} -setup { set a {}; set b {}; set c {}; set d {} -- cgit v0.12