diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2016-11-15 21:45:58 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2016-11-15 21:45:58 +0200 |
commit | 4f1eec385831018980e4c7424e1a544c5313b52a (patch) | |
tree | dc9ffe7aba416c469113a03ff08629d2bfeb6312 /profile.c | |
parent | b37675aa79213f2665abb2bbb4db90560642bdee (diff) | |
download | egawk-4f1eec385831018980e4c7424e1a544c5313b52a.tar.gz egawk-4f1eec385831018980e4c7424e1a544c5313b52a.tar.bz2 egawk-4f1eec385831018980e4c7424e1a544c5313b52a.zip |
Finish reworking typed regexes. Tests pass!
Diffstat (limited to 'profile.c')
-rw-r--r-- | profile.c | 13 |
1 files changed, 7 insertions, 6 deletions
@@ -646,11 +646,13 @@ cleanup: fall through */ case Op_match_rec: { - NODE *re = pc->memory->re_exp; - if (pc->memory->type == Node_regex) + if (pc->memory->type == Node_regex) { + NODE *re = pc->memory->re_exp; str = pp_string(re->stptr, re->stlen, '/'); - else - str = pp_typed_regex(re->stptr, re->stlen, '/'); + } else { + assert((pc->memory->flags & REGEX) != 0); + str = pp_typed_regex(pc->memory->stptr, pc->memory->stlen, '/'); + } pp_push(pc->opcode, str, CAN_FREE); } break; @@ -673,8 +675,7 @@ cleanup: str = pp_group3(txt, op2str(pc->opcode), restr); pp_free(t2); } else if (m->type == Node_val && (m->flags & REGEX) != 0) { - NODE *re = m->re_exp; - restr = pp_typed_regex(re->stptr, re->stlen, '/'); + restr = pp_typed_regex(m->stptr, m->stlen, '/'); str = pp_group3(txt, op2str(pc->opcode), restr); efree(restr); } else { |