A 32-bit build of BusyBox using clang segfaulted in the test "awk assign while assign". Specifically, on line 7 of the test input where the adjustment of the L.v pointer when the Fields array was reallocated
L.v += Fields - old_Fields_ptr; was out by 4 bytes. Rearrange to code so both gcc and clang generate code that works. Signed-off-by: Ron Yorston <r...@pobox.com> --- editors/awk.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editors/awk.c b/editors/awk.c index aa485c782..0981c6735 100644 --- a/editors/awk.c +++ b/editors/awk.c @@ -3006,7 +3006,7 @@ static var *evaluate(node *op, var *res) if (old_Fields_ptr) { //if (old_Fields_ptr != Fields) // debug_printf_eval("L.v moved\n"); - L.v += Fields - old_Fields_ptr; + L.v = Fields + (L.v - old_Fields_ptr); } if (opinfo & OF_STR2) { R.s = getvar_s(R.v); -- 2.43.0 _______________________________________________ busybox mailing list busybox@busybox.net http://lists.busybox.net/mailman/listinfo/busybox