[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: A loaded binary chunk may have wrong upvalues
- From: 张睿 <zrui16@...>
- Date: Fri, 24 Oct 2014 20:46:16 +0800
Here is the lua program to reproduce this:
local function f()
local x
return function() return x end
end
local function g()
local x
return function() return x, y end
end
print(load(string.dump(f()))())
print(load(string.dump(g()))())
Both f and g return a lua closure with one upvalue (x).
However, lua 5.2 gives the following output on my machine:
table: 0x6000109c0
lua: env.lua:10: attempt to index a nil value (upvalue '_ENV')
stack traceback:
env.lua:10: in function <env.lua:10>
env.lua:14: in main chunk
[C]: in ?
The table printed in the first line is actually _ENV, and not x.
The second print() throws an error, indicating that _ENV was set to nil.
I don't think either is the expected output, therefore I believe that this is a bug of lua implementation.
Lua 5.2 has this bug, and it is not fixed in 5.3 alpha/beta. I didn't test it with other versions.
Regards,
zr