|
|
@ -179,13 +179,13 @@ Tue May 2 15:27:58 EST 2000 |
|
|
|
** lparser.c |
|
|
|
Fri May 12 15:11:12 EST 2000 |
|
|
|
>> first element in a list constructor is not adjusted to one value |
|
|
|
>> (e.g. «a = {gsub('a','a','')}») |
|
|
|
>> (e.g. «a = {gsub('a','a','')}») |
|
|
|
(by Tomas; since 4.0a) |
|
|
|
|
|
|
|
** lparser.c |
|
|
|
Wed May 24 14:50:16 EST 2000 |
|
|
|
>> record-constructor starting with an upvalue name gets an error |
|
|
|
>> (e.g. «local a; function f() x = {a=1} end») |
|
|
|
>> (e.g. «local a; function f() x = {a=1} end») |
|
|
|
(by Edgar Toernig; since 3.1) |
|
|
|
|
|
|
|
** lparser.c |
|
|
@ -226,7 +226,7 @@ Wed Sep 27 09:50:19 EST 2000 |
|
|
|
** llex.h / llex.c / lparser.c |
|
|
|
Wed Sep 27 13:39:45 EST 2000 |
|
|
|
>> parser overwrites semantic information when looking ahead |
|
|
|
>> (e.g. «a = {print'foo'}») |
|
|
|
>> (e.g. «a = {print'foo'}») |
|
|
|
(by Edgar Toernig; since 4.0b, deriving from previous bug) |
|
|
|
|
|
|
|
** liolib.c |
|
|
@ -257,7 +257,7 @@ Thu Feb 1 11:55:45 EDT 2001 |
|
|
|
|
|
|
|
** ldo.c |
|
|
|
Fri Feb 2 14:06:40 EDT 2001 |
|
|
|
>> «while 1 dostring[[print('hello\n')]] end» never reclaims memory |
|
|
|
>> «while 1 dostring[[print('hello\n')]] end» never reclaims memory |
|
|
|
(by Andrew Paton; since 4.0b) |
|
|
|
|
|
|
|
** lbaselib.c |
|
|
@ -1375,7 +1375,7 @@ patch = [[ |
|
|
|
Bug{ |
|
|
|
what = [[As a library, loadlib.c should not access Lua internals |
|
|
|
(via lobject.h)]], |
|
|
|
report = [[Jérôme Vuarand, on 03/2007]], |
|
|
|
report = [[Jérôme Vuarand, on 03/2007]], |
|
|
|
since = [[5.0]], |
|
|
|
example = [[the bug has no effect on external behavior]], |
|
|
|
patch = [[remove the '#include "lobject.h" and use |
|
|
@ -1880,8 +1880,8 @@ patch = [[ |
|
|
|
+++ lundump.c 2008/04/04 19:51:41 2.7.1.4 |
|
|
|
@@ -1,5 +1,5 @@ |
|
|
|
/* |
|
|
|
-** $Id: bugs,v 1.119 2012/12/03 20:18:02 roberto Exp roberto $ |
|
|
|
+** $Id: bugs,v 1.119 2012/12/03 20:18:02 roberto Exp roberto $ |
|
|
|
-** $Id: bugs,v 1.120 2013/02/07 15:57:47 roberto Exp roberto $ |
|
|
|
+** $Id: bugs,v 1.120 2013/02/07 15:57:47 roberto Exp roberto $ |
|
|
|
** load precompiled Lua chunks |
|
|
|
** See Copyright Notice in lua.h |
|
|
|
*/ |
|
|
@ -2854,6 +2854,69 @@ patch = [[ |
|
|
|
]] |
|
|
|
} |
|
|
|
|
|
|
|
Bug{ |
|
|
|
what = [[stack overflow in vararg functions with many fixed |
|
|
|
parameters called with few arguments]], |
|
|
|
report = [[云风, 2013/04/17]], |
|
|
|
since = [[5.1]], |
|
|
|
fix = nil, |
|
|
|
example = [[ |
|
|
|
function f(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, |
|
|
|
p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, |
|
|
|
p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, |
|
|
|
p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, |
|
|
|
p41, p42, p43, p44, p45, p46, p48, p49, p50, ...) |
|
|
|
local a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 |
|
|
|
end |
|
|
|
|
|
|
|
f() -- seg. fault (on some machines) |
|
|
|
]], |
|
|
|
patch = [[ |
|
|
|
--- ldo.c 2012/10/01 14:05:04 2.108 |
|
|
|
+++ ldo.c 2013/04/19 20:56:06 |
|
|
|
@@ -324,7 +324,7 @@ |
|
|
|
case LUA_TLCL: { /* Lua function: prepare its call */ |
|
|
|
StkId base; |
|
|
|
Proto *p = clLvalue(func)->p; |
|
|
|
- luaD_checkstack(L, p->maxstacksize); |
|
|
|
+ luaD_checkstack(L, p->maxstacksize + p->numparams); |
|
|
|
func = restorestack(L, funcr); |
|
|
|
n = cast_int(L->top - func) - 1; /* number of real arguments */ |
|
|
|
for (; n < p->numparams; n++) |
|
|
|
]], |
|
|
|
} |
|
|
|
|
|
|
|
--[=[ |
|
|
|
Bug{ |
|
|
|
what = [[garbage collector can trigger too many times in recursive loops]], |
|
|
|
report = [[Roberto, 2013/04/25]], |
|
|
|
since = [[5.2.2]], |
|
|
|
fix = nil, |
|
|
|
example = [[ |
|
|
|
function f() f() end |
|
|
|
f() -- it takes too long before a "stack overflow" error |
|
|
|
]], |
|
|
|
patch = [[ |
|
|
|
--- lgc.c 2013/04/12 18:48:47 2.140.1.1 |
|
|
|
+++ lgc.c 2013/04/25 21:30:20 |
|
|
|
@@ -495,2 +495,3 @@ |
|
|
|
static lu_mem traversestack (global_State *g, lua_State *th) { |
|
|
|
+ int n = 0; |
|
|
|
StkId o = th->stack; |
|
|
|
@@ -505,3 +506,9 @@ |
|
|
|
} |
|
|
|
- return sizeof(lua_State) + sizeof(TValue) * th->stacksize; |
|
|
|
+ else { /* count call infos to compute size */ |
|
|
|
+ CallInfo *ci; |
|
|
|
+ for (ci = &th->base_ci; ci != th->ci; ci = ci->next) |
|
|
|
+ n++; |
|
|
|
+ } |
|
|
|
+ return sizeof(lua_State) + sizeof(TValue) * th->stacksize + |
|
|
|
+ sizeof(CallInfo) * n; |
|
|
|
} |
|
|
|
]] |
|
|
|
} |
|
|
|
|
|
|
|
--[=[ |
|
|
|
Bug{ |
|
|
|
what = [[ ]], |
|
|
|