diff options
-rw-r--r-- | src/lj_opt_fold.c | 3 |
1 files changed, 2 insertions, 1 deletions
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) | |||
598 | if (fleft->o == IR_BUFHDR && fleft->op2 == IRBUFHDR_RESET && | 598 | if (fleft->o == IR_BUFHDR && fleft->op2 == IRBUFHDR_RESET && |
599 | fleft->prev == hdr && | 599 | fleft->prev == hdr && |
600 | fleft->op1 == IR(hdr)->op1 && | 600 | fleft->op1 == IR(hdr)->op1 && |
601 | !(irt_isphi(fright->t) && IR(hdr)->prev)) { | 601 | !(irt_isphi(fright->t) && IR(hdr)->prev) && |
602 | (!LJ_HASBUFFER || J->chain[IR_CALLA] < hdr)) { | ||
602 | IRRef ref = fins->op1; | 603 | IRRef ref = fins->op1; |
603 | IR(ref)->op2 = IRBUFHDR_APPEND; /* Modify BUFHDR. */ | 604 | IR(ref)->op2 = IRBUFHDR_APPEND; /* Modify BUFHDR. */ |
604 | IR(ref)->op1 = fright->op1; | 605 | IR(ref)->op1 = fright->op1; |