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; |
