From d6c9f0ce591cb6d5302a81d0e02477ced25b06a5 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Wed, 1 Mar 2017 16:42:02 +0100 Subject: util.envload: Open file here instead of letting loadfile do it so that all return values from io.open can be collected --- util/envload.lua | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'util/envload.lua') diff --git a/util/envload.lua b/util/envload.lua index 3c5190df..08adf35e 100644 --- a/util/envload.lua +++ b/util/envload.lua @@ -6,7 +6,8 @@ -- -- luacheck: ignore 113/setfenv -local load, loadstring, loadfile, setfenv = load, loadstring, loadfile, setfenv; +local load, loadstring, setfenv = load, loadstring, setfenv; +local io_open = io.open; local envload; local envloadfile; @@ -18,7 +19,9 @@ if setfenv then end function envloadfile(file, env) - local f, err = loadfile(file); + local fh, err, errno = io_open(file); + if not fh then return fh, err, errno; end + local f, err = load(function () return fh:read(2048); end, "@"..file); if f and env then setfenv(f, env); end return f, err; end @@ -28,7 +31,9 @@ else end function envloadfile(file, env) - return loadfile(file, nil, env); + local fh, err, errno = io_open(file); + if not fh then return fh, err, errno; end + return load(fh:lines(2048), "@"..file, nil, env); end end -- cgit v1.2.3 From f637fde31f2a8c06819001b6d2b1766a51dd8cb2 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Wed, 1 Mar 2017 17:48:15 +0100 Subject: util.envload: Close file handle after reading data --- util/envload.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'util/envload.lua') diff --git a/util/envload.lua b/util/envload.lua index 08adf35e..926f20c0 100644 --- a/util/envload.lua +++ b/util/envload.lua @@ -22,6 +22,7 @@ if setfenv then local fh, err, errno = io_open(file); if not fh then return fh, err, errno; end local f, err = load(function () return fh:read(2048); end, "@"..file); + fh:close(); if f and env then setfenv(f, env); end return f, err; end @@ -33,7 +34,9 @@ else function envloadfile(file, env) local fh, err, errno = io_open(file); if not fh then return fh, err, errno; end - return load(fh:lines(2048), "@"..file, nil, env); + local f, err = load(fh:lines(2048), "@"..file, nil, env); + fh:close(); + return f, err; end end -- cgit v1.2.3