summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--Src/math.c11
-rw-r--r--Test/C01arith.ztst8
3 files changed, 17 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 63eca13a0..c22054372 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2013-11-14 Peter Stephenson <p.stephenson@samsung.com>
+
+ * 31982: Src/math.c, Test/C01arith.ztst: detection of floating
+ point constants had run rampant in users/17445. Fix the original
+ problem another way.
+
2013-11-13 Peter Stephenson <p.w.stephenson@ntlworld.com>
* 31977: Src/module.c: no error if autoloading a feature that
diff --git a/Src/math.c b/Src/math.c
index b21a3adee..42355f885 100644
--- a/Src/math.c
+++ b/Src/math.c
@@ -448,9 +448,7 @@ lexconstant(void)
if (*nptr == '-')
nptr++;
- if (*nptr == '0' &&
- (memchr(nptr, '.', strlen(nptr)) == NULL))
- {
+ if (*nptr == '0') {
nptr++;
if (*nptr == 'x' || *nptr == 'X') {
/* Let zstrtol parse number with base */
@@ -491,11 +489,8 @@ lexconstant(void)
nptr = ptr2;
}
}
- else
- {
- while (idigit(*nptr) || *nptr == '_')
- nptr++;
- }
+ while (idigit(*nptr) || *nptr == '_')
+ nptr++;
if (*nptr == '.' || *nptr == 'e' || *nptr == 'E') {
char *ptr2;
diff --git a/Test/C01arith.ztst b/Test/C01arith.ztst
index c19135ce6..7b005c2ab 100644
--- a/Test/C01arith.ztst
+++ b/Test/C01arith.ztst
@@ -258,3 +258,11 @@
>0.5
>3
>3.
+
+ print $(( 0x30 + 0.5 ))
+ print $(( 077 + 0.5 ))
+ (setopt octalzeroes; print $(( 077 + 0.5 )) )
+0:Mixed float and non-decimal integer constants
+>48.5
+>77.5
+>63.5