From 5935564c3bd0d807327e94f916abf826f5c4bb70 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Sun, 23 Jan 2022 19:13:53 +0100 Subject: [PATCH] Fix FOLD rule for BUFHDR append with intervening buffer use. Reported by XmiliaH. --- src/lj_opt_fold.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c index 0c5a4a6a..8200b240 100644 --- a/src/lj_opt_fold.c +++ b/src/lj_opt_fold.c @@ -598,7 +598,8 @@ LJFOLDF(bufput_bufstr) if (fleft->o == IR_BUFHDR && fleft->op2 == IRBUFHDR_RESET && fleft->prev == hdr && fleft->op1 == IR(hdr)->op1 && - !(irt_isphi(fright->t) && IR(hdr)->prev)) { + !(irt_isphi(fright->t) && IR(hdr)->prev) && + (!LJ_HASBUFFER || J->chain[IR_CALLA] < hdr)) { IRRef ref = fins->op1; IR(ref)->op2 = IRBUFHDR_APPEND; /* Modify BUFHDR. */ IR(ref)->op1 = fright->op1;