Skip to content

Commit 51bb8fa

Browse files
committed
update lua55
1 parent ee7efd0 commit 51bb8fa

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

3rd/lua55/lcode.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1370,9 +1370,11 @@ void luaK_indexed (FuncState *fs, expdesc *t, expdesc *k) {
13701370
fillidxk(t, k->u.info, VINDEXUP); /* literal short string */
13711371
}
13721372
else if (t->k == VVARGVAR) { /* indexing the vararg parameter? */
1373-
lua_assert(t->u.ind.t == fs->f->numparams);
1374-
t->u.ind.t = cast_byte(t->u.var.ridx);
1375-
fillidxk(t, luaK_exp2anyreg(fs, k), VVARGIND); /* register */
1373+
int kreg = luaK_exp2anyreg(fs, k); /* put key in some register */
1374+
lu_byte vreg = cast_byte(t->u.var.ridx); /* register with vararg param. */
1375+
lua_assert(vreg == fs->f->numparams);
1376+
t->u.ind.t = vreg; /* (avoid a direct assignment; values may overlap) */
1377+
fillidxk(t, kreg, VVARGIND); /* 't' represents 'vararg[k]' */
13761378
}
13771379
else {
13781380
/* register index of the table */

3rd/lua55/lparser.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -505,8 +505,8 @@ static void buildglobal (LexState *ls, TString *varname, expdesc *var) {
505505
init_exp(var, VGLOBAL, -1); /* global by default */
506506
singlevaraux(fs, ls->envn, var, 1); /* get environment variable */
507507
if (var->k == VGLOBAL)
508-
luaK_semerror(ls, "_ENV is global when accessing variable '%s'",
509-
getstr(varname));
508+
luaK_semerror(ls, "%s is global when accessing variable '%s'",
509+
LUA_ENV, getstr(varname));
510510
luaK_exp2anyregup(fs, var); /* _ENV could be a constant */
511511
codestring(&key, varname); /* key is variable name */
512512
luaK_indexed(fs, var, &key); /* 'var' represents _ENV[varname] */

0 commit comments

Comments
 (0)