diff options
author | Mike Pall <mike> | 2022-01-23 19:13:53 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2022-01-23 19:13:53 +0100 |
commit | 5935564c3bd0d807327e94f916abf826f5c4bb70 (patch) | |
tree | e3afd3cacaef5d1b0996aaab44fee20355f30a8c | |
parent | c929efc0395296a6a1c70c572b2df71bdfca966f (diff) | |
download | luajit-5935564c3bd0d807327e94f916abf826f5c4bb70.tar.gz luajit-5935564c3bd0d807327e94f916abf826f5c4bb70.tar.bz2 luajit-5935564c3bd0d807327e94f916abf826f5c4bb70.zip |
Fix FOLD rule for BUFHDR append with intervening buffer use.
Reported by XmiliaH.
Diffstat (limited to '')
-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; |