aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2016-06-26 18:10:08 +0300
committerArnold D. Robbins <arnold@skeeve.com>2016-06-26 18:10:08 +0300
commitb2ebebda055fb7e9cd02c03e394decdbcf63afd3 (patch)
tree0f505416fd01ceb92ce67616b6fc3df72c48426f
parenta0c2e0d3db233ed416f2a4346f2820ce79e46db6 (diff)
downloadegawk-b2ebebda055fb7e9cd02c03e394decdbcf63afd3.tar.gz
egawk-b2ebebda055fb7e9cd02c03e394decdbcf63afd3.tar.bz2
egawk-b2ebebda055fb7e9cd02c03e394decdbcf63afd3.zip
Fix handling of MAYBE_NUM; fixes change of 2015-08-25.
-rw-r--r--ChangeLog10
-rw-r--r--mpfr.c2
-rw-r--r--node.c7
3 files changed, 16 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index d794cae5..990b4b74 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2016-06-26 Arnold D. Robbins <arnold@skeeve.com>
+
+ Repair change of 2015-08-25 to handling of MAYBE_NUM.
+ * mpfr.c (mpg_force_number): Just clear MAYBE_NUM.
+ * node.c (r_force_number): Clear STRING separately after
+ setting NUMBER.
+
+ Thanks to Andrew Schorr for reporting the problem.
+ A test case will eventually be merged into master.
+
2016-06-16 Arnold D. Robbins <arnold@skeeve.com>
* awk.h: Add comment headers for several functions.
diff --git a/mpfr.c b/mpfr.c
index 6770a169..533ec9d9 100644
--- a/mpfr.c
+++ b/mpfr.c
@@ -347,7 +347,7 @@ mpg_force_number(NODE *n)
return n;
if ((n->flags & MAYBE_NUM) != 0) {
- n->flags &= ~(MAYBE_NUM|STRING);
+ n->flags &= ~MAYBE_NUM;
newflags = NUMBER;
}
diff --git a/node.c b/node.c
index 23199c5b..41545752 100644
--- a/node.c
+++ b/node.c
@@ -90,8 +90,9 @@ r_force_number(NODE *n)
return n;
} else if (n->stlen == 4 && is_ieee_magic_val(n->stptr)) {
if ((n->flags & MAYBE_NUM) != 0)
- n->flags &= ~(MAYBE_NUM|STRING);
+ n->flags &= ~MAYBE_NUM;
n->flags |= NUMBER|NUMCUR;
+ n->flags &= ~STRING;
n->numbr = get_ieee_magic_val(n->stptr);
return n;
@@ -116,7 +117,7 @@ r_force_number(NODE *n)
if ((n->flags & MAYBE_NUM) != 0) {
newflags = NUMBER;
- n->flags &= ~(MAYBE_NUM|STRING);
+ n->flags &= ~MAYBE_NUM;
} else
newflags = 0;
@@ -125,6 +126,7 @@ r_force_number(NODE *n)
n->numbr = (AWKNUM)(*cp - '0');
n->flags |= newflags;
n->flags |= NUMCUR;
+ n->flags &= ~STRING;
if (cp == n->stptr) /* no leading spaces */
n->flags |= NUMINT;
}
@@ -136,6 +138,7 @@ r_force_number(NODE *n)
if (! do_traditional && get_numbase(cp, true) != 10) {
n->numbr = nondec2awknum(cp, cpend - cp);
n->flags |= NUMCUR;
+ n->flags &= ~STRING;
ptr = cpend;
goto finish;
}