mirror of https://github.com/rusefi/lua.git
bug: wrong limit for list constructors
This commit is contained in:
parent
3ca9af51a4
commit
0782416a74
32
bugs
32
bugs
|
@ -1013,3 +1013,35 @@ patch = [[
|
||||||
]],
|
]],
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Bug{
|
||||||
|
what = [[list constructors have wrong limit]],
|
||||||
|
|
||||||
|
report = [[by Norman Ramsey, June 2006]],
|
||||||
|
|
||||||
|
since = "Lua 5.1",
|
||||||
|
|
||||||
|
example = [[
|
||||||
|
a = {}
|
||||||
|
a[1] = "x={1"
|
||||||
|
for i = 2, 2^20 do
|
||||||
|
a[i] = 1
|
||||||
|
end
|
||||||
|
a[#a + 1] = "}"
|
||||||
|
s = table.concat(a, ",")
|
||||||
|
assert(loadstring(s))()
|
||||||
|
print(#x)
|
||||||
|
]],
|
||||||
|
|
||||||
|
patch = [[
|
||||||
|
* lparser.c:
|
||||||
|
static void listfield (LexState *ls, struct ConsControl *cc) {
|
||||||
|
expr(ls, &cc->v);
|
||||||
|
- luaY_checklimit(ls->fs, cc->na, MAXARG_Bx, "items in a constructor");
|
||||||
|
+ luaY_checklimit(ls->fs, cc->na, MAX_INT, "items in a constructor");
|
||||||
|
cc->na++;
|
||||||
|
cc->tostore++;
|
||||||
|
}
|
||||||
|
]],
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
** $Id: lparser.c,v 2.43 2006/06/22 16:12:59 roberto Exp roberto $
|
** $Id: lparser.c,v 2.44 2006/07/11 15:53:29 roberto Exp roberto $
|
||||||
** Lua Parser
|
** Lua Parser
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
@ -495,7 +495,7 @@ static void lastlistfield (FuncState *fs, struct ConsControl *cc) {
|
||||||
|
|
||||||
static void listfield (LexState *ls, struct ConsControl *cc) {
|
static void listfield (LexState *ls, struct ConsControl *cc) {
|
||||||
expr(ls, &cc->v);
|
expr(ls, &cc->v);
|
||||||
luaY_checklimit(ls->fs, cc->na, MAXARG_Bx, "items in a constructor");
|
luaY_checklimit(ls->fs, cc->na, MAX_INT, "items in a constructor");
|
||||||
cc->na++;
|
cc->na++;
|
||||||
cc->tostore++;
|
cc->tostore++;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue