aboutsummaryrefslogtreecommitdiffstats
path: root/re.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2016-11-15 21:03:57 +0200
committerArnold D. Robbins <arnold@skeeve.com>2016-11-15 21:03:57 +0200
commitb37675aa79213f2665abb2bbb4db90560642bdee (patch)
tree74a00854546a7a174b0722277def07fbfbc0e4cd /re.c
parent84a7c376d6322a6e2429af79358091d10d94c004 (diff)
downloadegawk-b37675aa79213f2665abb2bbb4db90560642bdee.tar.gz
egawk-b37675aa79213f2665abb2bbb4db90560642bdee.tar.bz2
egawk-b37675aa79213f2665abb2bbb4db90560642bdee.zip
First steps reworking code away from node type.
Diffstat (limited to 're.c')
-rw-r--r--re.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/re.c b/re.c
index 4360d307..e4191a1c 100644
--- a/re.c
+++ b/re.c
@@ -345,18 +345,17 @@ re_update(NODE *t)
{
NODE *t1;
+ if (t->type == Node_val && (t->flags & REGEX) != 0)
+ return t->tre_regs;
+
if ((t->re_flags & CASE) == IGNORECASE) {
/* regex was compiled with settings matching IGNORECASE */
if ((t->re_flags & CONSTANT) != 0) {
/* it's a constant, so just return it as is */
- assert(t->type == Node_regex || t->type == Node_typedregex);
+ assert(t->type == Node_regex);
return t->re_reg;
}
t1 = t->re_exp;
- if (t1->type == Node_typedregex) {
- assert((t1->re_flags & CONSTANT) != 0);
- return t1->re_reg;
- }
if (t->re_text != NULL) {
/* if contents haven't changed, just return it */
if (cmp_nodes(t->re_text, t1, true) == 0)