]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
Merge branch 'master' into v2.1
authorMike Pall <mike>
Thu, 8 Dec 2022 23:21:40 +0000 (00:21 +0100)
committerMike Pall <mike>
Thu, 8 Dec 2022 23:21:40 +0000 (00:21 +0100)
1  2 
src/lj_record.c

diff --cc src/lj_record.c
index bfd4123657fa3908fe1b6729106f55f2c052e3e1,dee533278e151c9cdfc95e06487b9ff6709b3c85..79ee61728b1f2660f74d25022dab54de462bcd56
@@@ -1945,11 -1522,13 +1945,13 @@@ static void rec_varg(jit_State *J, BCRe
      } else if (dst + nresults > J->maxslot) {
        J->maxslot = dst + (BCReg)nresults;
      }
+     if (J->baseslot + J->maxslot >= LJ_MAX_JSLOTS)
+       lj_trace_err(J, LJ_TRERR_STACKOV);
      for (i = 0; i < nresults; i++)
 -      J->base[dst+i] = i < nvararg ? getslot(J, i - nvararg - 1) : TREF_NIL;
 +      J->base[dst+i] = i < nvararg ? getslot(J, i - nvararg - 1 - LJ_FR2) : TREF_NIL;
    } else {  /* Unknown number of varargs passed to trace. */
 -    TRef fr = emitir(IRTI(IR_SLOAD), 0, IRSLOAD_READONLY|IRSLOAD_FRAME);
 -    int32_t frofs = 8*(1+numparams)+FRAME_VARG;
 +    TRef fr = emitir(IRTI(IR_SLOAD), LJ_FR2, IRSLOAD_READONLY|IRSLOAD_FRAME);
 +    int32_t frofs = 8*(1+LJ_FR2+numparams)+FRAME_VARG;
      if (nresults >= 0) {  /* Known fixed number of results. */
        ptrdiff_t i;
        if (nvararg > 0) {