Make struct.unpack wrapped in setlist actually work (#1486)
Fixes #1434.
This commit is contained in:
parent
be263dacde
commit
99cd2177bb
|
@ -759,7 +759,6 @@ void luaV_execute (lua_State *L, int nexeccalls) {
|
|||
fixedstack(L);
|
||||
if (n == 0) {
|
||||
n = cast_int(L->top - ra) - 1;
|
||||
L->top = L->ci->top;
|
||||
}
|
||||
if (c == 0) c = cast_int(*pc++);
|
||||
runtime_check(L, ttistable(ra));
|
||||
|
@ -772,6 +771,7 @@ void luaV_execute (lua_State *L, int nexeccalls) {
|
|||
setobj2t(L, luaH_setnum(L, h, last--), val);
|
||||
luaC_barriert(L, h, val);
|
||||
}
|
||||
L->top = L->ci->top;
|
||||
unfixedstack(L);
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -309,7 +309,7 @@ static int b_unpack (lua_State *L) {
|
|||
size_t size = optsize(L, opt, &fmt);
|
||||
pos += gettoalign(pos, &h, opt, size);
|
||||
luaL_argcheck(L, pos+size <= ld, 2, "data string too short");
|
||||
luaL_checkstack(L, 1, "too many results");
|
||||
luaL_checkstack(L, 2, "too many results");
|
||||
switch (opt) {
|
||||
case 'b': case 'B': case 'h': case 'H':
|
||||
case 'l': case 'L': case 'T': case 'i': case 'I': { /* integer types */
|
||||
|
|
Loading…
Reference in New Issue