diff options
-rw-r--r-- | src/lj_record.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lj_record.c b/src/lj_record.c index bfd41236..79ee6172 100644 --- a/src/lj_record.c +++ b/src/lj_record.c | |||
@@ -1945,6 +1945,8 @@ static void rec_varg(jit_State *J, BCReg dst, ptrdiff_t nresults) | |||
1945 | } else if (dst + nresults > J->maxslot) { | 1945 | } else if (dst + nresults > J->maxslot) { |
1946 | J->maxslot = dst + (BCReg)nresults; | 1946 | J->maxslot = dst + (BCReg)nresults; |
1947 | } | 1947 | } |
1948 | if (J->baseslot + J->maxslot >= LJ_MAX_JSLOTS) | ||
1949 | lj_trace_err(J, LJ_TRERR_STACKOV); | ||
1948 | for (i = 0; i < nresults; i++) | 1950 | for (i = 0; i < nresults; i++) |
1949 | J->base[dst+i] = i < nvararg ? getslot(J, i - nvararg - 1 - LJ_FR2) : TREF_NIL; | 1951 | J->base[dst+i] = i < nvararg ? getslot(J, i - nvararg - 1 - LJ_FR2) : TREF_NIL; |
1950 | } else { /* Unknown number of varargs passed to trace. */ | 1952 | } else { /* Unknown number of varargs passed to trace. */ |
@@ -2022,8 +2024,6 @@ static void rec_varg(jit_State *J, BCReg dst, ptrdiff_t nresults) | |||
2022 | lj_trace_err_info(J, LJ_TRERR_NYIBC); | 2024 | lj_trace_err_info(J, LJ_TRERR_NYIBC); |
2023 | } | 2025 | } |
2024 | } | 2026 | } |
2025 | if (J->baseslot + J->maxslot >= LJ_MAX_JSLOTS) | ||
2026 | lj_trace_err(J, LJ_TRERR_STACKOV); | ||
2027 | } | 2027 | } |
2028 | 2028 | ||
2029 | /* -- Record allocations -------------------------------------------------- */ | 2029 | /* -- Record allocations -------------------------------------------------- */ |