aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lcode.c7
-rw-r--r--lparser.c3
2 files changed, 5 insertions, 5 deletions
diff --git a/lcode.c b/lcode.c
index 83a6d064..6f241c94 100644
--- a/lcode.c
+++ b/lcode.c
@@ -703,19 +703,18 @@ static void const2exp (TValue *v, expdesc *e) {
703 703
704/* 704/*
705** Fix an expression to return the number of results 'nresults'. 705** Fix an expression to return the number of results 'nresults'.
706** Either 'e' is a multi-ret expression (function call or vararg) 706** 'e' must be a multi-ret expression (function call or vararg).
707** or 'nresults' is LUA_MULTRET (as any expression can satisfy that).
708*/ 707*/
709void luaK_setreturns (FuncState *fs, expdesc *e, int nresults) { 708void luaK_setreturns (FuncState *fs, expdesc *e, int nresults) {
710 Instruction *pc = &getinstruction(fs, e); 709 Instruction *pc = &getinstruction(fs, e);
711 if (e->k == VCALL) /* expression is an open function call? */ 710 if (e->k == VCALL) /* expression is an open function call? */
712 SETARG_C(*pc, nresults + 1); 711 SETARG_C(*pc, nresults + 1);
713 else if (e->k == VVARARG) { 712 else {
713 lua_assert(e->k == VVARARG);
714 SETARG_C(*pc, nresults + 1); 714 SETARG_C(*pc, nresults + 1);
715 SETARG_A(*pc, fs->freereg); 715 SETARG_A(*pc, fs->freereg);
716 luaK_reserveregs(fs, 1); 716 luaK_reserveregs(fs, 1);
717 } 717 }
718 else lua_assert(nresults == LUA_MULTRET);
719} 718}
720 719
721 720
diff --git a/lparser.c b/lparser.c
index 8c812039..b0dbb65c 100644
--- a/lparser.c
+++ b/lparser.c
@@ -1014,7 +1014,8 @@ static void funcargs (LexState *ls, expdesc *f, int line) {
1014 args.k = VVOID; 1014 args.k = VVOID;
1015 else { 1015 else {
1016 explist(ls, &args); 1016 explist(ls, &args);
1017 luaK_setmultret(fs, &args); 1017 if (hasmultret(args.k))
1018 luaK_setmultret(fs, &args);
1018 } 1019 }
1019 check_match(ls, ')', '(', line); 1020 check_match(ls, ')', '(', line);
1020 break; 1021 break;