diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2015-04-14 15:06:41 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2015-04-14 15:06:41 +0300 |
commit | aca30f7d82ec4fa002c6ab5ea4a2d9d77d28c2cd (patch) | |
tree | 49a3c25bc4460088e6dcc23f40bebe044ab16e67 /builtin.c | |
parent | c187863b95bed5f750b08df898fdfb611a4bdb54 (diff) | |
download | egawk-aca30f7d82ec4fa002c6ab5ea4a2d9d77d28c2cd.tar.gz egawk-aca30f7d82ec4fa002c6ab5ea4a2d9d77d28c2cd.tar.bz2 egawk-aca30f7d82ec4fa002c6ab5ea4a2d9d77d28c2cd.zip |
Add more tests, make them work. Almost done...
Diffstat (limited to 'builtin.c')
-rw-r--r-- | builtin.c | 12 |
1 files changed, 8 insertions, 4 deletions
@@ -3106,7 +3106,8 @@ call_sub(const char *name, int nargs) * push replace * push $0 */ - regex = make_regnode(Node_regex, regex); + if (regex->type != Node_hardregex) + regex = make_regnode(Node_regex, regex); PUSH(regex); PUSH(replace); lhs = r_get_field(zero, (Func_ptr *) 0, true); @@ -3130,7 +3131,8 @@ call_sub(const char *name, int nargs) * nargs++ * } */ - regex = make_regnode(Node_regex, regex); + if (regex->type != Node_hardregex) + regex = make_regnode(Node_regex, regex); PUSH(regex); PUSH(replace); PUSH(glob_flag); @@ -3167,7 +3169,8 @@ call_match(int nargs) /* Don't need to pop the string just to push it back ... */ - regex = make_regnode(Node_regex, regex); + if (regex->type != Node_hardregex) + regex = make_regnode(Node_regex, regex); PUSH(regex); if (array) @@ -3195,7 +3198,8 @@ call_split_func(const char *name, int nargs) if (nargs >= 3) { regex = POP_STRING(); - regex = make_regnode(Node_regex, regex); + if (regex->type != Node_hardregex) + regex = make_regnode(Node_regex, regex); } else { if (name[0] == 's') { regex = make_regnode(Node_regex, FS_node->var_value); |