debugger can only see `local function' after it has a meaningful value

This commit is contained in:
Roberto Ierusalimschy 2003-10-09 14:56:23 -03:00
parent f04fe526cd
commit a41d60e1d1
2 changed files with 14 additions and 4 deletions

14
bugs
View File

@ -561,11 +561,19 @@ local function d () end
patch = [[ patch = [[
* lparser.c: * lparser.c:
1145c1145,1146 1143a1144
> FuncState *fs = ls->fs;
1145c1146,1147
< init_exp(&v, VLOCAL, ls->fs->freereg++); < init_exp(&v, VLOCAL, ls->fs->freereg++);
--- ---
> init_exp(&v, VLOCAL, ls->fs->freereg); > init_exp(&v, VLOCAL, fs->freereg);
> luaK_reserveregs(ls->fs, 1); > luaK_reserveregs(fs, 1);
1148c1150,1152
< luaK_storevar(ls->fs, &v, &b);
---
> luaK_storevar(fs, &v, &b);
> /* debug information will only see the variable after this point! */
> getlocvar(fs, fs->nactvar - 1).startpc = fs->pc;
]], ]],
} }

View File

@ -1,5 +1,5 @@
/* /*
** $Id: lparser.c,v 1.219 2003/09/29 16:41:35 roberto Exp roberto $ ** $Id: lparser.c,v 1.220 2003/10/03 16:04:24 roberto Exp roberto $
** Lua Parser ** Lua Parser
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@ -1172,6 +1172,8 @@ static void localfunc (LexState *ls) {
adjustlocalvars(ls, 1); adjustlocalvars(ls, 1);
body(ls, &b, 0, ls->linenumber); body(ls, &b, 0, ls->linenumber);
luaK_storevar(fs, &v, &b); luaK_storevar(fs, &v, &b);
/* debug information will only see the variable after this point! */
getlocvar(fs, fs->nactvar - 1).startpc = fs->pc;
} }