]> git.lizzy.rs Git - metalua.git/commitdiff
fixed incorrect behavior for loadstring() and loadfile() when metalua.compiler is...
authorFabien Fleutot <fabien@MacFabien.home>
Sun, 2 Nov 2008 23:17:15 +0000 (00:17 +0100)
committerFabien Fleutot <fabien@MacFabien.home>
Sun, 2 Nov 2008 23:17:15 +0000 (00:17 +0100)
src/compiler/mlc.mlua

index d317f0c40522e59be436f81ae9efa3910572fe81..90cdc9a12d38856f913e10f8ef71f8daca847710 100644 (file)
@@ -156,14 +156,17 @@ function loadstring(str, name)
    local n = str:match '^#![^\n]*\n()'
    if n then str=str:sub(n, -1) end
    -- FIXME: handle erroneous returns (return nil + error msg)
-   return mlc.function_of_luastring(str, name)
+   local success, f = pcall (mlc.function_of_luastring, str, name)
+   if success then return f else return nil, f end
 end
 
 function loadfile(filename)
-   local f = io.open(filename, 'rb')
-   local src = f:read '*a'
-   f:close()
-   return loadstring(src, '@'..filename)
+   local f, err_msg = io.open(filename, 'rb')
+   if not f then return nil, err_msg end
+   local success, src = pcall( f.read, f, '*a')
+   pcall(f.close, f)
+   if success then return loadstring (src, '@'..filename)
+   else return nil, src end
 end
 
 function load(f, name)