aboutsummaryrefslogtreecommitdiff
path: root/ldo.c
diff options
context:
space:
mode:
Diffstat (limited to 'ldo.c')
-rw-r--r--ldo.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/ldo.c b/ldo.c
index 59391f7b..d39edab0 100644
--- a/ldo.c
+++ b/ldo.c
@@ -119,17 +119,13 @@ l_noret luaD_throw (lua_State *L, int errcode) {
119 } 119 }
120 else { /* thread has no error handler */ 120 else { /* thread has no error handler */
121 global_State *g = G(L); 121 global_State *g = G(L);
122 errcode = luaD_closeprotected(L, 0, errcode); /* close all upvalues */ 122 errcode = luaE_resetthread(L, errcode); /* close all upvalues */
123 L->status = cast_byte(errcode); /* mark it as dead */
124 if (g->mainthread->errorJmp) { /* main thread has a handler? */ 123 if (g->mainthread->errorJmp) { /* main thread has a handler? */
125 setobjs2s(L, g->mainthread->top++, L->top - 1); /* copy error obj. */ 124 setobjs2s(L, g->mainthread->top++, L->top - 1); /* copy error obj. */
126 luaD_throw(g->mainthread, errcode); /* re-throw in main thread */ 125 luaD_throw(g->mainthread, errcode); /* re-throw in main thread */
127 } 126 }
128 else { /* no handler at all; abort */ 127 else { /* no handler at all; abort */
129 if (g->panic) { /* panic function? */ 128 if (g->panic) { /* panic function? */
130 luaD_seterrorobj(L, errcode, L->top); /* assume EXTRA_STACK */
131 if (L->ci->top < L->top)
132 L->ci->top = L->top; /* pushing msg. can break this invariant */
133 lua_unlock(L); 129 lua_unlock(L);
134 g->panic(L); /* call panic function (last chance to jump out) */ 130 g->panic(L); /* call panic function (last chance to jump out) */
135 } 131 }