diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2015-06-28 22:08:12 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2015-06-28 22:08:12 +0300 |
commit | 687e6594ca3a6195ef834a5466b5fc7de2de2d7b (patch) | |
tree | 78642a8843c150a7ce6dac980287645b876499a3 | |
parent | 8a4905be350313d41f6c0b20497809760d7fa84e (diff) | |
download | egawk-687e6594ca3a6195ef834a5466b5fc7de2de2d7b.tar.gz egawk-687e6594ca3a6195ef834a5466b5fc7de2de2d7b.tar.bz2 egawk-687e6594ca3a6195ef834a5466b5fc7de2de2d7b.zip |
Improve memory tracking on typed regex.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | awkgram.c | 1 | ||||
-rw-r--r-- | awkgram.y | 1 | ||||
-rw-r--r-- | builtin.c | 2 | ||||
-rw-r--r-- | interpret.h | 2 |
5 files changed, 12 insertions, 2 deletions
@@ -1,3 +1,11 @@ +2015-06-28 Arnold D. Robbins <arnold@skeeve.com> + + Improve memory tracking of typed regexps. + + * awkgram.y (make_regnode): Set valref to 1. + * interpret.h (r_interpret): Have Op_push_re upref typed regexp. + * builtin.c (do_typeof): OK to deref typed regex. + 2015-06-26 Arnold D. Robbins <arnold@skeeve.com> Remove support for old-style extensions. @@ -7286,6 +7286,7 @@ make_regnode(int type, NODE *exp) } n->re_exp = exp; n->re_flags = CONSTANT; + n->valref = 1; } return n; } @@ -4866,6 +4866,7 @@ make_regnode(int type, NODE *exp) } n->re_exp = exp; n->re_flags = CONSTANT; + n->valref = 1; } return n; } @@ -3884,9 +3884,7 @@ do_typeof(int nargs) deref = false; break; case Node_typedregex: - /* Op_push_re does not UPREF */ res = "regexp"; - deref = false; break; case Node_val: case Node_var: diff --git a/interpret.h b/interpret.h index fab4f1c6..0a5cbbfe 100644 --- a/interpret.h +++ b/interpret.h @@ -990,6 +990,8 @@ arrayfor: r = POP_STRING(); unref(m->re_exp); m->re_exp = r; + } else if (m->type == Node_typedregex) { + UPREF(m); } PUSH(m); break; |