diff --git a/core/src/main/java/org/luaj/vm2/Globals.java b/core/src/main/java/org/luaj/vm2/Globals.java index 76d9c6c4..2fd8f4f7 100644 --- a/core/src/main/java/org/luaj/vm2/Globals.java +++ b/core/src/main/java/org/luaj/vm2/Globals.java @@ -179,10 +179,22 @@ public class Globals extends LuaTable { * @throws LuaError if the file could not be loaded. */ public LuaValue loadfile(String filename) { + InputStream is = null; try { - return load(finder.findResource(filename), "@"+filename, "bt", this); + is = finder.findResource(filename); + if (is == null) { + return error("cannot open " + filename + ": No such file or directory"); + } + return load(is, "@"+filename, "bt", this); } catch (Exception e) { return error("load "+filename+": "+e); + } finally { + if (is != null) { + try { + is.close(); + } catch (Exception ignored) { + } + } } }