diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2014-11-16 19:43:18 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2014-11-16 19:43:18 +0200 |
commit | ee77f64d563188b6a5d761fd9342df00431e99d8 (patch) | |
tree | 24a5c830c75c62375ea126a3d8b9c5b38276a239 | |
parent | 8b863f8852067b0638e09dc7c82355b96381dc12 (diff) | |
download | egawk-ee77f64d563188b6a5d761fd9342df00431e99d8.tar.gz egawk-ee77f64d563188b6a5d761fd9342df00431e99d8.tar.bz2 egawk-ee77f64d563188b6a5d761fd9342df00431e99d8.zip |
Revert field reference changes of 2014-11-11.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | interpret.h | 24 |
2 files changed, 9 insertions, 20 deletions
@@ -1,3 +1,8 @@ +2014-11-16 Arnold D. Robbins <arnold@skeeve.com> + + * interpret.h: Revert change of 2014-11-11 since it breaks + certain uses. + 2014-11-15 Arnold D. Robbins <arnold@skeeve.com> * array.c, awk.h, awkgram.y, builtin.c, dfa.c, eval.c, field.c, diff --git a/interpret.h b/interpret.h index 83ccbfc5..74f56c73 100644 --- a/interpret.h +++ b/interpret.h @@ -340,12 +340,7 @@ uninitialized_scalar: lhs = r_get_field(t1, (Func_ptr *) 0, true); decr_sp(); DEREF(t1); - /* only for $0, up ref count */ - if (*lhs == fields_arr[0]) { - r = *lhs; - UPREF(r); - } else - r = dupnode(*lhs); + r = dupnode(*lhs); /* can't use UPREF here */ PUSH(r); break; @@ -654,22 +649,11 @@ mod: lhs = get_lhs(pc->memory, false); unref(*lhs); r = pc->initval; /* constant initializer */ - if (r != NULL) { + if (r == NULL) + *lhs = POP_SCALAR(); + else { UPREF(r); *lhs = r; - } else { - r = POP_SCALAR(); - - /* if was a field, turn it into a var */ - if ((r->flags & FIELD) == 0) { - *lhs = r; - } else if (r->valref == 1) { - r->flags &= ~FIELD; - *lhs = r; - } else { - *lhs = dupnode(r); - DEREF(r); - } } break; |