diff options
Diffstat (limited to 'lfunc.c')
-rw-r--r-- | lfunc.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -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 | } |