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 -------------------------------------------------- */ |
