cannot assign to unlimited variables, because it causes overflow in

the number of returns of a function.
This commit is contained in:
Roberto Ierusalimschy
1999-06-16 10:35:01 -03:00
parent 5c19ed2a13
commit d4dce57f5c
2 changed files with 17 additions and 3 deletions

View File

@@ -1,5 +1,5 @@
/*
** $Id: lparser.c,v 1.34 1999/05/21 19:54:06 roberto Exp roberto $
** $Id: lparser.c,v 1.35 1999/06/16 13:22:04 roberto Exp roberto $
** LL(1) Parser and code generator for Lua
** See Copyright Notice in lua.h
*/
@@ -39,6 +39,11 @@
#define SMAXUPVALUES "32"
/* maximum number of variables in the left side of an assignment */
#define MAXVARSLH 100
#define SMAXVARSLH "100"
/*
** Variable descriptor:
** must include an "exp" option because LL(1) cannot distinguish
@@ -1221,6 +1226,9 @@ static void decinit (LexState *ls, listdesc *d) {
static int assignment (LexState *ls, vardesc *v, int nvars) {
int left = 0;
if (nvars > MAXVARSLH)
luaX_error(ls, "too many variables in a multiple assignment "
MES_LIM(SMAXVARSLH));
unloaddot(ls, v);
if (ls->token == ',') { /* assignment -> ',' NAME assignment */
vardesc nv;