mirror of https://github.com/mirror/busybox.git
awk: fix segfault when compiled by clang
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 <rmy@pobox.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>master
parent
01f2b5976d
commit
e1a6874106
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue