aboutsummaryrefslogtreecommitdiff
path: root/lparser.c
diff options
context:
space:
mode:
Diffstat (limited to 'lparser.c')
-rw-r--r--lparser.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/lparser.c b/lparser.c
index 37f84cce..5e244e24 100644
--- a/lparser.c
+++ b/lparser.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lparser.c,v 2.158 2017/04/29 18:09:17 roberto Exp roberto $ 2** $Id: lparser.c,v 2.159 2017/05/13 12:57:20 roberto Exp roberto $
3** Lua Parser 3** Lua Parser
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -527,22 +527,24 @@ static void codeclosure (LexState *ls, expdesc *v) {
527 527
528 528
529static void open_func (LexState *ls, FuncState *fs, BlockCnt *bl) { 529static void open_func (LexState *ls, FuncState *fs, BlockCnt *bl) {
530 Proto *f; 530 Proto *f = fs->f;
531 fs->prev = ls->fs; /* linked list of funcstates */ 531 fs->prev = ls->fs; /* linked list of funcstates */
532 fs->ls = ls; 532 fs->ls = ls;
533 ls->fs = fs; 533 ls->fs = fs;
534 fs->pc = 0; 534 fs->pc = 0;
535 fs->previousline = f->linedefined;
536 fs->iwthabs = 0;
535 fs->lasttarget = 0; 537 fs->lasttarget = 0;
536 fs->jpc = NO_JUMP; 538 fs->jpc = NO_JUMP;
537 fs->freereg = 0; 539 fs->freereg = 0;
538 fs->nk = 0; 540 fs->nk = 0;
541 fs->nabslineinfo = 0;
539 fs->np = 0; 542 fs->np = 0;
540 fs->nups = 0; 543 fs->nups = 0;
541 fs->nlocvars = 0; 544 fs->nlocvars = 0;
542 fs->nactvar = 0; 545 fs->nactvar = 0;
543 fs->firstlocal = ls->dyd->actvar.n; 546 fs->firstlocal = ls->dyd->actvar.n;
544 fs->bl = NULL; 547 fs->bl = NULL;
545 f = fs->f;
546 f->source = ls->source; 548 f->source = ls->source;
547 f->maxstacksize = 2; /* registers 0/1 are always valid */ 549 f->maxstacksize = 2; /* registers 0/1 are always valid */
548 enterblock(fs, bl, 0); 550 enterblock(fs, bl, 0);
@@ -557,8 +559,11 @@ static void close_func (LexState *ls) {
557 leaveblock(fs); 559 leaveblock(fs);
558 luaM_reallocvector(L, f->code, f->sizecode, fs->pc, Instruction); 560 luaM_reallocvector(L, f->code, f->sizecode, fs->pc, Instruction);
559 f->sizecode = fs->pc; 561 f->sizecode = fs->pc;
560 luaM_reallocvector(L, f->lineinfo, f->sizelineinfo, fs->pc, int); 562 luaM_reallocvector(L, f->lineinfo, f->sizelineinfo, fs->pc, ls_byte);
561 f->sizelineinfo = fs->pc; 563 f->sizelineinfo = fs->pc;
564 luaM_reallocvector(L, f->abslineinfo, f->sizeabslineinfo,
565 fs->nabslineinfo, AbsLineInfo);
566 f->sizeabslineinfo = fs->nabslineinfo;
562 luaM_reallocvector(L, f->k, f->sizek, fs->nk, TValue); 567 luaM_reallocvector(L, f->k, f->sizek, fs->nk, TValue);
563 f->sizek = fs->nk; 568 f->sizek = fs->nk;
564 luaM_reallocvector(L, f->p, f->sizep, fs->np, Proto *); 569 luaM_reallocvector(L, f->p, f->sizep, fs->np, Proto *);