diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2016-06-26 18:10:08 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2016-06-26 18:10:08 +0300 |
commit | b2ebebda055fb7e9cd02c03e394decdbcf63afd3 (patch) | |
tree | 0f505416fd01ceb92ce67616b6fc3df72c48426f | |
parent | a0c2e0d3db233ed416f2a4346f2820ce79e46db6 (diff) | |
download | egawk-b2ebebda055fb7e9cd02c03e394decdbcf63afd3.tar.gz egawk-b2ebebda055fb7e9cd02c03e394decdbcf63afd3.tar.bz2 egawk-b2ebebda055fb7e9cd02c03e394decdbcf63afd3.zip |
Fix handling of MAYBE_NUM; fixes change of 2015-08-25.
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | mpfr.c | 2 | ||||
-rw-r--r-- | node.c | 7 |
3 files changed, 16 insertions, 3 deletions
@@ -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. @@ -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; } @@ -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; } |