Browse Source

Fix stack slot updates for down-recursion.

Mike Pall 14 years ago
parent
commit
b4006ba9a8
1 changed files with 2 additions and 1 deletions
  1. 2 1
      src/lj_record.c

+ 2 - 1
src/lj_record.c

@@ -666,7 +666,8 @@ void lj_record_ret(jit_State *J, BCReg rbase, ptrdiff_t gotresults)
     GCproto *pt = funcproto(frame_func(frame - (cbase+1)));
     if (J->framedepth == 0 && J->pt && frame == J->L->base - 1) {
       if (check_downrec_unroll(J, pt)) {
-	J->maxslot = (BCReg)(rbase + nresults);
+	J->maxslot = (BCReg)(rbase + gotresults);
+	lj_snap_purge(J);
 	rec_stop(J, J->cur.traceno);  /* Down-recursion. */
 	return;
       }