diff options
| -rw-r--r-- | lparser.c | 10 |
1 files changed, 5 insertions, 5 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lparser.c,v 1.19 1999/02/09 15:59:10 roberto Exp roberto $ | 2 | ** $Id: lparser.c,v 1.20 1999/02/09 18:01:55 roberto Exp roberto $ |
| 3 | ** LL(1) Parser and code generator for Lua | 3 | ** LL(1) Parser and code generator for Lua |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -135,7 +135,7 @@ static void var_or_func_tail (LexState *ls, vardesc *v); | |||
| 135 | 135 | ||
| 136 | static void check_pc (FuncState *fs, int n) { | 136 | static void check_pc (FuncState *fs, int n) { |
| 137 | if (fs->pc+n > fs->maxcode) | 137 | if (fs->pc+n > fs->maxcode) |
| 138 | fs->maxcode = luaM_growvector(&fs->f->code, fs->maxcode, | 138 | fs->maxcode = luaM_growvector(&fs->f->code, fs->maxcode+n, |
| 139 | Byte, codeEM, MAX_INT); | 139 | Byte, codeEM, MAX_INT); |
| 140 | } | 140 | } |
| 141 | 141 | ||
| @@ -295,8 +295,8 @@ static void luaI_registerlocalvar (FuncState *fs, TaggedString *varname, | |||
| 295 | int line) { | 295 | int line) { |
| 296 | if (fs->maxvars != -1) { /* debug information? */ | 296 | if (fs->maxvars != -1) { /* debug information? */ |
| 297 | TProtoFunc *f = fs->f; | 297 | TProtoFunc *f = fs->f; |
| 298 | if (fs->nvars+1 > fs->maxvars) | 298 | if (fs->nvars >= fs->maxvars) |
| 299 | fs->maxvars = luaM_growvector(&f->locvars, fs->maxvars+1, | 299 | fs->maxvars = luaM_growvector(&f->locvars, fs->maxvars, |
| 300 | LocVar, "", MAX_INT); | 300 | LocVar, "", MAX_INT); |
| 301 | f->locvars[fs->nvars].varname = varname; | 301 | f->locvars[fs->nvars].varname = varname; |
| 302 | f->locvars[fs->nvars].line = line; | 302 | f->locvars[fs->nvars].line = line; |
| @@ -398,7 +398,7 @@ static void adjuststack (LexState *ls, int n) { | |||
| 398 | static void close_exp (LexState *ls, int pc, int nresults) { | 398 | static void close_exp (LexState *ls, int pc, int nresults) { |
| 399 | if (pc > 0) { /* expression is an open function call */ | 399 | if (pc > 0) { /* expression is an open function call */ |
| 400 | Byte *code = ls->fs->f->code; | 400 | Byte *code = ls->fs->f->code; |
| 401 | code[pc-1] = nresults; /* set nresults */ | 401 | code[pc-1] = (Byte)nresults; /* set nresults */ |
| 402 | if (nresults != MULT_RET) | 402 | if (nresults != MULT_RET) |
| 403 | deltastack(ls, nresults); /* push results */ | 403 | deltastack(ls, nresults); /* push results */ |
| 404 | deltastack(ls, -(code[pc]+1)); /* pop params (at code[pc]) and function */ | 404 | deltastack(ls, -(code[pc]+1)); /* pop params (at code[pc]) and function */ |
