From d266d40deaaf0fc7234a06217e121a158c980085 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Thu, 9 Feb 2017 12:50:05 -0200 Subject: [PATCH] error when calling close method without arguments (e.g., |io.stdin.close()|) --- liolib.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/liolib.c b/liolib.c index 8491edca..3fa87461 100644 --- a/liolib.c +++ b/liolib.c @@ -1,5 +1,5 @@ /* -** $Id: liolib.c,v 2.150 2016/09/01 16:14:56 roberto Exp roberto $ +** $Id: liolib.c,v 2.151 2016/12/20 18:37:00 roberto Exp roberto $ ** Standard I/O (and system) library ** See Copyright Notice in lua.h */ @@ -206,11 +206,16 @@ static int aux_close (lua_State *L) { } +static int f_close (lua_State *L) { + tofile(L); /* make sure argument is an open stream */ + return aux_close(L); +} + + static int io_close (lua_State *L) { if (lua_isnone(L, 1)) /* no argument? */ lua_getfield(L, LUA_REGISTRYINDEX, IO_OUTPUT); /* use standard output */ - tofile(L); /* make sure argument is an open stream */ - return aux_close(L); + return f_close(L); } @@ -712,7 +717,7 @@ static const luaL_Reg iolib[] = { ** methods for file handles */ static const luaL_Reg flib[] = { - {"close", io_close}, + {"close", f_close}, {"flush", f_flush}, {"lines", f_lines}, {"read", f_read},