aboutsummaryrefslogtreecommitdiff
path: root/lvm.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2017-05-13 10:04:33 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2017-05-13 10:04:33 -0300
commit5c8770f8969a73cf4ca503f54c2217f76de62e04 (patch)
treed5dac87490011d117277d94c81f6f2fd47b1b094 /lvm.c
parent7647d5d13d016f114dac4be0b9da62d502eab400 (diff)
downloadlua-5c8770f8969a73cf4ca503f54c2217f76de62e04.tar.gz
lua-5c8770f8969a73cf4ca503f54c2217f76de62e04.tar.bz2
lua-5c8770f8969a73cf4ca503f54c2217f76de62e04.zip
back to old-style vararg system (with vararg table collecting extra
arguments)
Diffstat (limited to 'lvm.c')
-rw-r--r--lvm.c18
1 files changed, 3 insertions, 15 deletions
diff --git a/lvm.c b/lvm.c
index 9a60bb5b..3053d929 100644
--- a/lvm.c
+++ b/lvm.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lvm.c,v 2.279 2017/05/10 17:32:19 roberto Exp roberto $ 2** $Id: lvm.c,v 2.280 2017/05/11 18:57:46 roberto Exp roberto $
3** Lua virtual machine 3** Lua virtual machine
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -1433,20 +1433,8 @@ void luaV_execute (lua_State *L) {
1433 } 1433 }
1434 vmcase(OP_VARARG) { 1434 vmcase(OP_VARARG) {
1435 int b = GETARG_B(i) - 1; /* required results */ 1435 int b = GETARG_B(i) - 1; /* required results */
1436 int j; 1436 StkId vtab = base + cl->p->numparams - 1; /* vararg table */
1437 int n = cast_int(base - ci->func) - cl->p->numparams - 1; 1437 Protect(luaT_getvarargs(L, vtab, ra, b));
1438 if (n < 0) /* less arguments than parameters? */
1439 n = 0; /* no vararg arguments */
1440 if (b < 0) { /* B == 0? */
1441 b = n; /* get all var. arguments */
1442 Protect(luaD_checkstack(L, n));
1443 ra = RA(i); /* previous call may change the stack */
1444 L->top = ra + n;
1445 }
1446 for (j = 0; j < b && j < n; j++)
1447 setobjs2s(L, ra + j, base - n + j);
1448 for (; j < b; j++) /* complete required results with nil */
1449 setnilvalue(ra + j);
1450 vmbreak; 1438 vmbreak;
1451 } 1439 }
1452 vmcase(OP_EXTRAARG) { 1440 vmcase(OP_EXTRAARG) {