From b6ac928a53d146233741fc5f7fe1cac66de27303 Mon Sep 17 00:00:00 2001 From: "Andrew J. Schorr" Date: Sun, 14 Dec 2014 10:27:32 -0500 Subject: Stop allocating an extra wasted byte at the end of various strings. --- eval.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index 95992704..eca829c1 100644 --- a/eval.c +++ b/eval.c @@ -828,9 +828,9 @@ set_OFS() new_ofs_len = OFS_node->var_value->stlen; if (OFS == NULL) - emalloc(OFS, char *, new_ofs_len + 2, "set_OFS"); + emalloc(OFS, char *, new_ofs_len + 1, "set_OFS"); else if (OFSlen < new_ofs_len) - erealloc(OFS, char *, new_ofs_len + 2, "set_OFS"); + erealloc(OFS, char *, new_ofs_len + 1, "set_OFS"); memcpy(OFS, OFS_node->var_value->stptr, OFS_node->var_value->stlen); OFSlen = new_ofs_len; -- cgit v1.2.3 From f088a3efc8aefc47f0bfe7824732aae4283b4c15 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Tue, 28 Apr 2015 16:39:13 +0300 Subject: Make call-by-value work again for $0. --- eval.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index 12776846..dfb99a4c 100644 --- a/eval.c +++ b/eval.c @@ -1325,7 +1325,13 @@ setup_frame(INSTRUCTION *pc) if (m->type == Node_param_list) m = GET_PARAM(m->param_cnt); - + + /* $0 needs to be passed by value to a function */ + if (m == fields_arr[0]) { + DEREF(m); + m = dupnode(m); + } + switch (m->type) { case Node_var_new: case Node_var_array: -- cgit v1.2.3