]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
Fix use-def analysis for vararg functions.
authorMike Pall <mike>
Sat, 29 May 2021 13:31:13 +0000 (15:31 +0200)
committerMike Pall <mike>
Sat, 29 May 2021 13:31:13 +0000 (15:31 +0200)
Reported by Shmuel Zeigerman.

src/lj_snap.c

index 0c5e8e90f6ff03ce6fe9d2de98f27ac00aec04b7..eb14058ed4c93c88783ffcb4146f4fab322e9e36 100644 (file)
@@ -271,8 +271,10 @@ static BCReg snap_usedef(jit_State *J, uint8_t *udf,
 void lj_snap_purge(jit_State *J)
 {
   uint8_t udf[SNAP_USEDEF_SLOTS];
-  BCReg maxslot = J->maxslot;
-  BCReg s = snap_usedef(J, udf, J->pc, maxslot);
+  BCReg s, maxslot = J->maxslot;
+  if (bc_op(*J->pc) == BC_FUNCV && maxslot > J->pt->numparams)
+    maxslot = J->pt->numparams;
+  s = snap_usedef(J, udf, J->pc, maxslot);
   for (; s < maxslot; s++)
     if (udf[s] != 0)
       J->base[s] = 0;  /* Purge dead slots. */