diff options
author | Mike Pall <mike> | 2023-07-08 19:40:12 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2023-07-08 19:40:12 +0200 |
commit | 94ada59628dd6ce5d6d2dad1d35a68ad30127f53 (patch) | |
tree | ebf67e67dcda7b884c58417742677093aaafe286 | |
parent | b7a8c7c184257858699454408420dd5f0b6c8a75 (diff) | |
download | luajit-94ada59628dd6ce5d6d2dad1d35a68ad30127f53.tar.gz luajit-94ada59628dd6ce5d6d2dad1d35a68ad30127f53.tar.bz2 luajit-94ada59628dd6ce5d6d2dad1d35a68ad30127f53.zip |
Fix maxslots when recording BC_VARG.
Analyzed by Sergey Kaplun. #1024
-rw-r--r-- | src/lj_record.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/src/lj_record.c b/src/lj_record.c index 10a14a6f..c9933968 100644 --- a/src/lj_record.c +++ b/src/lj_record.c | |||
@@ -1556,8 +1556,7 @@ static void rec_varg(jit_State *J, BCReg dst, ptrdiff_t nresults) | |||
1556 | } | 1556 | } |
1557 | for (i = nvararg; i < nresults; i++) | 1557 | for (i = nvararg; i < nresults; i++) |
1558 | J->base[dst+i] = TREF_NIL; | 1558 | J->base[dst+i] = TREF_NIL; |
1559 | if (dst + (BCReg)nresults > J->maxslot) | 1559 | J->maxslot = dst + (BCReg)nresults; |
1560 | J->maxslot = dst + (BCReg)nresults; | ||
1561 | } else if (select_detect(J)) { /* y = select(x, ...) */ | 1560 | } else if (select_detect(J)) { /* y = select(x, ...) */ |
1562 | TRef tridx = J->base[dst-1]; | 1561 | TRef tridx = J->base[dst-1]; |
1563 | TRef tr = TREF_NIL; | 1562 | TRef tr = TREF_NIL; |