@@ -3652,9 +3652,9 @@ It needs an "interceptor" 'memcmp' function that continues
36523652reading memory after a difference is found.]],
36533653patch = [[
365436542c2
3655- < ** $Id: loslib.c ,v 1.64 2016/04/18 13:06:55 roberto Exp roberto $
3655+ < ** $Id: bugs ,v 1.149 2016/07/15 17:24:09 roberto Exp roberto $
36563656---
3657- > ** $Id: loslib.c ,v 1.64 2016/04/18 13:06:55 roberto Exp $
3657+ > ** $Id: bugs ,v 1.149 2016/07/15 17:24:09 roberto Exp roberto $
36583658263c263,264
36593659< for (option = LUA_STRFTIMEOPTIONS; *option != '\0'; option += oplen) {
36603660---
@@ -3664,6 +3664,30 @@ patch = [[
36643664}
36653665
36663666
3667+ Bug{
3668+ what = [[Lua can generate wrong code in functions with too many constants]],
3669+ report = [[Marco Schöpl, 2016/07/17]],
3670+ since = [[5.3.3]],
3671+ fix = nil,
3672+ example = [[See http://lua-users.org/lists/lua-l/2016-07/msg00303.html]],
3673+ patch = [[
3674+ --- lcode.c 2016/06/20 19:12:46 2.110
3675+ +++ lcode.c 2016/07/18 15:43:41
3676+ @@ -1018,8 +1018,8 @@
3677+ */
3678+ static void codebinexpval (FuncState *fs, OpCode op,
3679+ expdesc *e1, expdesc *e2, int line) {
3680+ - int rk1 = luaK_exp2RK(fs, e1); /* both operands are "RK" */
3681+ - int rk2 = luaK_exp2RK(fs, e2);
3682+ + int rk2 = luaK_exp2RK(fs, e2); /* both operands are "RK" */
3683+ + int rk1 = luaK_exp2RK(fs, e1);
3684+ freeexps(fs, e1, e2);
3685+ e1->u.info = luaK_codeABC(fs, op, 0, rk1, rk2); /* generate opcode */
3686+ e1->k = VRELOCABLE; /* all those operations are relocatable */
3687+ ]]
3688+ }
3689+
3690+
36673691--[=[
36683692Bug{
36693693what = [[ ]],
0 commit comments