aboutsummaryrefslogtreecommitdiff
path: root/lfunc.c
diff options
context:
space:
mode:
Diffstat (limited to 'lfunc.c')
-rw-r--r--lfunc.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/lfunc.c b/lfunc.c
index 8f39f6b0..1e61f03f 100644
--- a/lfunc.c
+++ b/lfunc.c
@@ -164,8 +164,12 @@ static int callclosemth (lua_State *L, StkId level, int status) {
164 int newstatus = luaD_pcall(L, callclose, NULL, oldtop, 0); 164 int newstatus = luaD_pcall(L, callclose, NULL, oldtop, 0);
165 if (newstatus != LUA_OK && status == CLOSEPROTECT) /* first error? */ 165 if (newstatus != LUA_OK && status == CLOSEPROTECT) /* first error? */
166 status = newstatus; /* this will be the new error */ 166 status = newstatus; /* this will be the new error */
167 else /* leave original error (or nil) on top */ 167 else {
168 if (newstatus != LUA_OK) /* supressed error? */
169 luaE_warnerror(L, "__close metamethod");
170 /* leave original error (or nil) on top */
168 L->top = restorestack(L, oldtop); 171 L->top = restorestack(L, oldtop);
172 }
169 } 173 }
170 /* else no metamethod; ignore this case and keep original error */ 174 /* else no metamethod; ignore this case and keep original error */
171 } 175 }