aboutsummaryrefslogtreecommitdiffstats
path: root/re.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2016-08-03 21:38:50 +0300
committerArnold D. Robbins <arnold@skeeve.com>2016-08-03 21:38:50 +0300
commitf591d307d9af95bfa0ccda4d5eb76a674447ba39 (patch)
tree65c8e2259634653566fc2c49ec996ff416330361 /re.c
parent9907a598dca8f129422c42f8c4fa3b4e2c988221 (diff)
downloadegawk-f591d307d9af95bfa0ccda4d5eb76a674447ba39.tar.gz
egawk-f591d307d9af95bfa0ccda4d5eb76a674447ba39.tar.bz2
egawk-f591d307d9af95bfa0ccda4d5eb76a674447ba39.zip
Restore typed regexp code in a new branch.
Diffstat (limited to 're.c')
-rw-r--r--re.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/re.c b/re.c
index 3b01823b..d92560d0 100644
--- a/re.c
+++ b/re.c
@@ -351,10 +351,14 @@ re_update(NODE *t)
/* 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);
+ assert(t->type == Node_regex || t->type == Node_typedregex);
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) == 0)