diff options
author | Andrew J. Schorr <aschorr@telemetry-investments.com> | 2017-04-26 11:36:01 -0400 |
---|---|---|
committer | Andrew J. Schorr <aschorr@telemetry-investments.com> | 2017-04-26 11:36:01 -0400 |
commit | 31a715930244ddee0eeffb1e0b4799e42c470515 (patch) | |
tree | 2ca835b5c7daa11b6cea77fdd2f8031a00a6eed3 | |
parent | 275b4b981b44581fcb5e3e77333376e1eb3dc2e2 (diff) | |
parent | a3be85eec86d00c12e7f4b41a9e27794fbb479a6 (diff) | |
download | egawk-31a715930244ddee0eeffb1e0b4799e42c470515.tar.gz egawk-31a715930244ddee0eeffb1e0b4799e42c470515.tar.bz2 egawk-31a715930244ddee0eeffb1e0b4799e42c470515.zip |
Merge branch 'master' into feature/api-mpfr
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | awk.h | 6 | ||||
-rw-r--r-- | awkgram.c | 2 | ||||
-rw-r--r-- | awkgram.y | 2 |
4 files changed, 16 insertions, 6 deletions
@@ -1,3 +1,15 @@ +2017-04-26 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * awkgram.y (make_regnode): Fix bug -- we should not set valref to 1 + when creating a node of type Node_regex, since valref is appropriate + only for Node_val nodes. This fixes a bug introduced in commit + 687e6594. Also, add an assert to make it clear that this function + supports only Node_regex and Node_dynregex. + * awk.h (NODE): Restore sref to the `val' subportion, since it is not + really needed for Node_regex, now that the bug in make_regnode has + been fixed. + (valref): Restore macro definition. + 2017-04-24 Arnold D. Robbins <arnold@skeeve.com> * awk.h (NODE): Additional cleanups. Removed `aq' and `param_list' @@ -374,6 +374,7 @@ typedef struct exp_node { #endif char *sp; size_t slen; + long sref; int idx; wchar_t *wsp; size_t wslen; @@ -383,10 +384,6 @@ typedef struct exp_node { NODETYPE type; unsigned int flags; - // We access valref for both Node_val and Node_regex values, - // so it needs to be outside the union. - long valref; - /* type = Node_val */ /* * STRING and NUMBER are mutually exclusive, except for the special @@ -494,6 +491,7 @@ typedef struct exp_node { */ #define stptr sub.val.sp #define stlen sub.val.slen +#define valref sub.val.sref #define stfmt sub.val.idx #define wstptr sub.val.wsp #define wstlen sub.val.wslen @@ -7437,6 +7437,7 @@ make_regnode(int type, NODE *exp) { NODE *n; + assert(type == Node_regex || type == Node_dynregex); getnode(n); memset(n, 0, sizeof(NODE)); n->type = type; @@ -7456,7 +7457,6 @@ make_regnode(int type, NODE *exp) } n->re_exp = exp; n->re_flags = CONSTANT; - n->valref = 1; } return n; } @@ -5017,6 +5017,7 @@ make_regnode(int type, NODE *exp) { NODE *n; + assert(type == Node_regex || type == Node_dynregex); getnode(n); memset(n, 0, sizeof(NODE)); n->type = type; @@ -5036,7 +5037,6 @@ make_regnode(int type, NODE *exp) } n->re_exp = exp; n->re_flags = CONSTANT; - n->valref = 1; } return n; } |