diff --git a/src/lib_init.c b/src/lib_init.c index aad2b899..d0b9d407 100644 --- a/src/lib_init.c +++ b/src/lib_init.c @@ -89,7 +89,7 @@ LUALIB_API void luaL_openlibs(lua_State *L) " end\n" " return dump(f, strip)\n" "end\n"; - (luaL_loadstring(L, dump_fix) || lua_pcall(L, 0, 0, 0)); + //(luaL_loadstring(L, dump_fix) || lua_pcall(L, 0, 0, 0)); #endif #ifdef DO_LUA_INIT handle_luainit(L); diff --git a/src/lj_parse.c b/src/lj_parse.c index 2d2a73a2..44851f71 100644 --- a/src/lj_parse.c +++ b/src/lj_parse.c @@ -1133,7 +1133,7 @@ static MSize var_lookup_(FuncState *fs, GCstr *name, ExpDesc *e, int first) if ((int32_t)reg >= 0) { /* Local in this function? */ expr_init(e, VLOCAL, reg); #if LUA_COMPAT_VARARG - if (!fs->need_vararg && fs->flags & PROTO_VARARG){ + if (!fs->need_vararg && fs->flags & PROTO_VARARG && reg == 0){ if (name->len == (sizeof("arg") - 1) && strncmp(strdata(name), "arg", name->len) == 0){ fs->need_vararg = 1; } @@ -2751,6 +2751,9 @@ static int parse_stmt(LexState *ls) static void add_argstmt(LexState* ls) { + //skip if/while/do-end body + if (ls->fs->bl->prev) + return; ExpDesc e; if (ls->fs->flags & PROTO_VARARG) {