diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2017-11-15 22:01:58 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2017-11-15 22:01:58 +0200 |
commit | 303608bfc4219fbc94bda64e401f8a544db932e1 (patch) | |
tree | 905bb1faeb9d2ffb898aab883a1a5414937bb60e /interpret.h | |
parent | 0b70cb57ca6b843d4a28f9a918f8adb3f8fa0b3c (diff) | |
parent | b4b1162e427f634567e09bda421f947c3c8db9ce (diff) | |
download | egawk-303608bfc4219fbc94bda64e401f8a544db932e1.tar.gz egawk-303608bfc4219fbc94bda64e401f8a544db932e1.tar.bz2 egawk-303608bfc4219fbc94bda64e401f8a544db932e1.zip |
Merge branch 'gawk-4.2-stable'
Diffstat (limited to 'interpret.h')
-rw-r--r-- | interpret.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/interpret.h b/interpret.h index 166a11e1..4b140c28 100644 --- a/interpret.h +++ b/interpret.h @@ -699,11 +699,16 @@ mod: lhs = r_get_field(t1, & assign, false); decr_sp(); DEREF(t1); + /* + * N.B. We must call assign() before unref, since + * we may need to copy $n values before freeing the + * $0 buffer. + */ + assert(assign != NULL); + assign(); unref(*lhs); r = POP_SCALAR(); UNFIELD(*lhs, r); - assert(assign != NULL); - assign(); } break; |