diff options
Diffstat (limited to 'lparser.c')
-rw-r--r-- | lparser.c | 25 |
1 files changed, 9 insertions, 16 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lparser.c,v 2.168 2017/11/23 16:35:54 roberto Exp roberto $ | 2 | ** $Id: lparser.c,v 2.169 2017/11/30 13:29:18 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 | */ |
@@ -569,21 +569,14 @@ static void close_func (LexState *ls) { | |||
569 | luaK_ret(fs, 0, 0); /* final return */ | 569 | luaK_ret(fs, 0, 0); /* final return */ |
570 | leaveblock(fs); | 570 | leaveblock(fs); |
571 | luaK_finish(fs); | 571 | luaK_finish(fs); |
572 | luaM_reallocvector(L, f->code, f->sizecode, fs->pc, Instruction); | 572 | luaM_shrinkvector(L, f->code, f->sizecode, fs->pc, Instruction); |
573 | f->sizecode = fs->pc; | 573 | luaM_shrinkvector(L, f->lineinfo, f->sizelineinfo, fs->pc, ls_byte); |
574 | luaM_reallocvector(L, f->lineinfo, f->sizelineinfo, fs->pc, ls_byte); | 574 | luaM_shrinkvector(L, f->abslineinfo, f->sizeabslineinfo, |
575 | f->sizelineinfo = fs->pc; | 575 | fs->nabslineinfo, AbsLineInfo); |
576 | luaM_reallocvector(L, f->abslineinfo, f->sizeabslineinfo, | 576 | luaM_shrinkvector(L, f->k, f->sizek, fs->nk, TValue); |
577 | fs->nabslineinfo, AbsLineInfo); | 577 | luaM_shrinkvector(L, f->p, f->sizep, fs->np, Proto *); |
578 | f->sizeabslineinfo = fs->nabslineinfo; | 578 | luaM_shrinkvector(L, f->locvars, f->sizelocvars, fs->nlocvars, LocVar); |
579 | luaM_reallocvector(L, f->k, f->sizek, fs->nk, TValue); | 579 | luaM_shrinkvector(L, f->upvalues, f->sizeupvalues, fs->nups, Upvaldesc); |
580 | f->sizek = fs->nk; | ||
581 | luaM_reallocvector(L, f->p, f->sizep, fs->np, Proto *); | ||
582 | f->sizep = fs->np; | ||
583 | luaM_reallocvector(L, f->locvars, f->sizelocvars, fs->nlocvars, LocVar); | ||
584 | f->sizelocvars = fs->nlocvars; | ||
585 | luaM_reallocvector(L, f->upvalues, f->sizeupvalues, fs->nups, Upvaldesc); | ||
586 | f->sizeupvalues = fs->nups; | ||
587 | lua_assert(fs->bl == NULL); | 580 | lua_assert(fs->bl == NULL); |
588 | ls->fs = fs->prev; | 581 | ls->fs = fs->prev; |
589 | luaC_checkGC(L); | 582 | luaC_checkGC(L); |