From fc9fcd26261c543b3e3c0827f161180e31df35a2 Mon Sep 17 00:00:00 2001 From: Bart van Strien Date: Sat, 10 Feb 2018 12:06:30 +0100 Subject: [PATCH] Prevent needless seeking in File:lines on closed files (issue #1377) --- src/modules/filesystem/wrap_File.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/modules/filesystem/wrap_File.cpp b/src/modules/filesystem/wrap_File.cpp index fab4f0dd4..383999323 100644 --- a/src/modules/filesystem/wrap_File.cpp +++ b/src/modules/filesystem/wrap_File.cpp @@ -282,14 +282,12 @@ int w_File_lines_i(lua_State *L) // If the user has changed the position, we need to seek back first int64 pos = file->tell(); int64 userpos = -1; - if (!lua_isnoneornil(L, lua_upvalueindex(4))) + if (luax_toboolean(L, lua_upvalueindex(5))) { userpos = pos; pos = (int64) lua_tonumber(L, lua_upvalueindex(4)); if (userpos != pos) file->seek(pos); - else - userpos = -1; } // Keep reading until newline or EOF @@ -353,7 +351,7 @@ int w_File_lines(lua_State *L) lua_pushstring(L, ""); // buffer lua_pushnumber(L, 0); // buffer offset lua_pushnumber(L, 0); // File position. - luax_pushboolean(L, file->getMode() != File::MODE_CLOSED); // Save current file mode. + luax_pushboolean(L, file->getMode() != File::MODE_CLOSED); // Save current file position. if (file->getMode() != File::MODE_READ) {