aboutsummaryrefslogtreecommitdiff
path: root/bugs
diff options
context:
space:
mode:
Diffstat (limited to 'bugs')
-rw-r--r--bugs77
1 files changed, 70 insertions, 7 deletions
diff --git a/bugs b/bugs
index ea2af432..225f0625 100644
--- a/bugs
+++ b/bugs
@@ -179,13 +179,13 @@ Tue May 2 15:27:58 EST 2000
179** lparser.c 179** lparser.c
180Fri May 12 15:11:12 EST 2000 180Fri May 12 15:11:12 EST 2000
181>> first element in a list constructor is not adjusted to one value 181>> first element in a list constructor is not adjusted to one value
182>> (e.g. «a = {gsub('a','a','')}») 182>> (e.g. «a = {gsub('a','a','')}»)
183(by Tomas; since 4.0a) 183(by Tomas; since 4.0a)
184 184
185** lparser.c 185** lparser.c
186Wed May 24 14:50:16 EST 2000 186Wed May 24 14:50:16 EST 2000
187>> record-constructor starting with an upvalue name gets an error 187>> record-constructor starting with an upvalue name gets an error
188>> (e.g. «local a; function f() x = {a=1} end») 188>> (e.g. «local a; function f() x = {a=1} end»)
189(by Edgar Toernig; since 3.1) 189(by Edgar Toernig; since 3.1)
190 190
191** lparser.c 191** lparser.c
@@ -226,7 +226,7 @@ Wed Sep 27 09:50:19 EST 2000
226** llex.h / llex.c / lparser.c 226** llex.h / llex.c / lparser.c
227Wed Sep 27 13:39:45 EST 2000 227Wed Sep 27 13:39:45 EST 2000
228>> parser overwrites semantic information when looking ahead 228>> parser overwrites semantic information when looking ahead
229>> (e.g. «a = {print'foo'}») 229>> (e.g. «a = {print'foo'}»)
230(by Edgar Toernig; since 4.0b, deriving from previous bug) 230(by Edgar Toernig; since 4.0b, deriving from previous bug)
231 231
232** liolib.c 232** liolib.c
@@ -257,7 +257,7 @@ Thu Feb 1 11:55:45 EDT 2001
257 257
258** ldo.c 258** ldo.c
259Fri Feb 2 14:06:40 EDT 2001 259Fri Feb 2 14:06:40 EDT 2001
260>> «while 1 dostring[[print('hello\n')]] end» never reclaims memory 260>> «while 1 dostring[[print('hello\n')]] end» never reclaims memory
261(by Andrew Paton; since 4.0b) 261(by Andrew Paton; since 4.0b)
262 262
263** lbaselib.c 263** lbaselib.c
@@ -1375,7 +1375,7 @@ patch = [[
1375Bug{ 1375Bug{
1376what = [[As a library, loadlib.c should not access Lua internals 1376what = [[As a library, loadlib.c should not access Lua internals
1377(via lobject.h)]], 1377(via lobject.h)]],
1378report = [[Jérôme Vuarand, on 03/2007]], 1378report = [[Jérôme Vuarand, on 03/2007]],
1379since = [[5.0]], 1379since = [[5.0]],
1380example = [[the bug has no effect on external behavior]], 1380example = [[the bug has no effect on external behavior]],
1381patch = [[remove the '#include "lobject.h" and use 1381patch = [[remove the '#include "lobject.h" and use
@@ -1880,8 +1880,8 @@ patch = [[
1880+++ lundump.c 2008/04/04 19:51:41 2.7.1.4 1880+++ lundump.c 2008/04/04 19:51:41 2.7.1.4
1881@@ -1,5 +1,5 @@ 1881@@ -1,5 +1,5 @@
1882 /* 1882 /*
1883-** $Id: bugs,v 1.119 2012/12/03 20:18:02 roberto Exp roberto $ 1883-** $Id: bugs,v 1.120 2013/02/07 15:57:47 roberto Exp roberto $
1884+** $Id: bugs,v 1.119 2012/12/03 20:18:02 roberto Exp roberto $ 1884+** $Id: bugs,v 1.120 2013/02/07 15:57:47 roberto Exp roberto $
1885 ** load precompiled Lua chunks 1885 ** load precompiled Lua chunks
1886 ** See Copyright Notice in lua.h 1886 ** See Copyright Notice in lua.h
1887 */ 1887 */
@@ -2854,6 +2854,69 @@ patch = [[
2854]] 2854]]
2855} 2855}
2856 2856
2857Bug{
2858what = [[stack overflow in vararg functions with many fixed
2859parameters called with few arguments]],
2860report = [[云风, 2013/04/17]],
2861since = [[5.1]],
2862fix = nil,
2863example = [[
2864function f(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10,
2865 p11, p12, p13, p14, p15, p16, p17, p18, p19, p20,
2866 p21, p22, p23, p24, p25, p26, p27, p28, p29, p30,
2867 p31, p32, p33, p34, p35, p36, p37, p38, p39, p40,
2868 p41, p42, p43, p44, p45, p46, p48, p49, p50, ...)
2869 local a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14
2870end
2871
2872f() -- seg. fault (on some machines)
2873]],
2874patch = [[
2875--- ldo.c 2012/10/01 14:05:04 2.108
2876+++ ldo.c 2013/04/19 20:56:06
2877@@ -324,7 +324,7 @@
2878 case LUA_TLCL: { /* Lua function: prepare its call */
2879 StkId base;
2880 Proto *p = clLvalue(func)->p;
2881- luaD_checkstack(L, p->maxstacksize);
2882+ luaD_checkstack(L, p->maxstacksize + p->numparams);
2883 func = restorestack(L, funcr);
2884 n = cast_int(L->top - func) - 1; /* number of real arguments */
2885 for (; n < p->numparams; n++)
2886]],
2887}
2888
2889--[=[
2890Bug{
2891what = [[garbage collector can trigger too many times in recursive loops]],
2892report = [[Roberto, 2013/04/25]],
2893since = [[5.2.2]],
2894fix = nil,
2895example = [[
2896function f() f() end
2897f() -- it takes too long before a "stack overflow" error
2898]],
2899patch = [[
2900--- lgc.c 2013/04/12 18:48:47 2.140.1.1
2901+++ lgc.c 2013/04/25 21:30:20
2902@@ -495,2 +495,3 @@
2903 static lu_mem traversestack (global_State *g, lua_State *th) {
2904+ int n = 0;
2905 StkId o = th->stack;
2906@@ -505,3 +506,9 @@
2907 }
2908- return sizeof(lua_State) + sizeof(TValue) * th->stacksize;
2909+ else { /* count call infos to compute size */
2910+ CallInfo *ci;
2911+ for (ci = &th->base_ci; ci != th->ci; ci = ci->next)
2912+ n++;
2913+ }
2914+ return sizeof(lua_State) + sizeof(TValue) * th->stacksize +
2915+ sizeof(CallInfo) * n;
2916 }
2917]]
2918}
2919
2857--[=[ 2920--[=[
2858Bug{ 2921Bug{
2859what = [[ ]], 2922what = [[ ]],