diff options
| author | Mike Pall <mike> | 2023-06-02 11:42:58 +0200 |
|---|---|---|
| committer | Mike Pall <mike> | 2023-06-02 11:42:58 +0200 |
| commit | 2d8300c1944f3a62c10f0829e9b7847c5a6f0482 (patch) | |
| tree | b9ffe834d3a49650cba3832811985db65be8e98c | |
| parent | 8e53ccc686541aebb44cb2e54489f943b86d8214 (diff) | |
| download | luajit-2d8300c1944f3a62c10f0829e9b7847c5a6f0482.tar.gz luajit-2d8300c1944f3a62c10f0829e9b7847c5a6f0482.tar.bz2 luajit-2d8300c1944f3a62c10f0829e9b7847c5a6f0482.zip | |
Fix frame for on-trace out-of-memory error.
Reported by ruidong007.
| -rw-r--r-- | src/lj_err.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/lj_err.c b/src/lj_err.c index a497ab11..3ee70b86 100644 --- a/src/lj_err.c +++ b/src/lj_err.c | |||
| @@ -777,6 +777,10 @@ LJ_NOINLINE void lj_err_mem(lua_State *L) | |||
| 777 | { | 777 | { |
| 778 | if (L->status == LUA_ERRERR+1) /* Don't touch the stack during lua_open. */ | 778 | if (L->status == LUA_ERRERR+1) /* Don't touch the stack during lua_open. */ |
| 779 | lj_vm_unwind_c(L->cframe, LUA_ERRMEM); | 779 | lj_vm_unwind_c(L->cframe, LUA_ERRMEM); |
| 780 | if (LJ_HASJIT) { | ||
| 781 | TValue *base = tvref(G(L)->jit_base); | ||
| 782 | if (base) L->base = base; | ||
| 783 | } | ||
| 780 | if (curr_funcisL(L)) L->top = curr_topL(L); | 784 | if (curr_funcisL(L)) L->top = curr_topL(L); |
| 781 | setstrV(L, L->top++, lj_err_str(L, LJ_ERR_ERRMEM)); | 785 | setstrV(L, L->top++, lj_err_str(L, LJ_ERR_ERRMEM)); |
| 782 | lj_err_throw(L, LUA_ERRMEM); | 786 | lj_err_throw(L, LUA_ERRMEM); |
