Of course, as unpack uses the same definition of length as the #operator. From http://www.lua.org/manual/5.1/manual.html#pdf-unpack "By default, i is 1 and j is the length of the list, as defined by the length operator" 2014-10-20 22:34 GMT+02:00 Eduardo Barthel <edub4rt@xxxxxxxxx>: > I see, but now look this case, another different behaviour > > bart@archrox:~ $ lua > Lua 5.2.3 Copyright (C) 1994-2013 Lua.org, PUC-Rio >> a = {1,nil,3} >> pcall(print, unpack(a)) > 1 nil 3 > > bart@archrox:~ $ luajit > LuaJIT 2.0.3 -- Copyright (C) 2005-2014 Mike Pall. http://luajit.org/ > JIT: ON CMOV SSE2 SSE3 SSE4.1 fold cse dce fwd dse narrow loop abc sink fuse >> a = {1,nil,3} >> pcall(print, unpack(a)) > 1 > > > 2014-10-20 18:28 GMT-02:00 Stefano <phd.st.p@xxxxxxxxx>: > >> And I was going to reply as well.... >> >> On 20 October 2014 22:26, Coda Highland <chighland@xxxxxxxxx> wrote: >> > This isn't a bug at all. You're invoking undefined behavior -- # is >> > only well-defined for sequences, and a sequence is defined as not >> > containing embedded nils. >> > >> > /s/ Adam >> > >> > On Mon, Oct 20, 2014 at 1:17 PM, Eduardo Barthel <edub4rt@xxxxxxxxx> >> > wrote: >> >> While using LuaJIT in my apps I found this bug while declaring a new >> >> table >> >> with "nil" value in the middle, read the following examples, while in >> >> Lua >> >> the output is 3 in LuajIT is 1. >> >> >> >> Lua 5.2.3 Copyright (C) 1994-2013 Lua.org, PUC-Rio >> >>> a = {1,nil,2} >> >>> print(#a) >> >> 3 >> >> >> >> bart@archrox:~ $ lua5.1 >> >> Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio >> >>> a = {1,nil,2} >> >>> print(#a) >> >> 3 >> >> >> >> bart@archrox:~ $ luajit >> >> LuaJIT 2.0.3 -- Copyright (C) 2005-2014 Mike Pall. http://luajit.org/ >> >> JIT: ON CMOV SSE2 SSE3 SSE4.1 fold cse dce fwd dse narrow loop abc sink >> >> fuse >> >>> a = {1,nil,2} >> >>> print(#a) >> >> 1 >> >> >> > >> >