summaryrefslogtreecommitdiff
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) {
int newstatus = luaD_pcall(L, callclose, NULL, oldtop, 0);
if (newstatus != LUA_OK && status == CLOSEPROTECT) /* first error? */
status = newstatus; /* this will be the new error */
- else /* leave original error (or nil) on top */
+ else {
+ if (newstatus != LUA_OK) /* supressed error? */
+ luaE_warnerror(L, "__close metamethod");
+ /* leave original error (or nil) on top */
L->top = restorestack(L, oldtop);
+ }
}
/* else no metamethod; ignore this case and keep original error */
}