瀏覽代碼

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

Roberto Ierusalimschy 22 年之前
父節點
當前提交
a41d60e1d1
共有 2 個文件被更改,包括 14 次插入4 次删除
  1. 11 3
      bugs
  2. 3 1
      lparser.c

+ 11 - 3
bugs

@@ -561,11 +561,19 @@ local function d () end
 
 patch = [[
 * 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);
->   luaK_reserveregs(ls->fs, 1);
+>   init_exp(&v, VLOCAL, fs->freereg);
+>   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;
 ]],
 
 }

+ 3 - 1
lparser.c

@@ -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
 ** See Copyright Notice in lua.h
 */
@@ -1172,6 +1172,8 @@ static void localfunc (LexState *ls) {
   adjustlocalvars(ls, 1);
   body(ls, &b, 0, ls->linenumber);
   luaK_storevar(fs, &v, &b);
+  /* debug information will only see the variable after this point! */
+  getlocvar(fs, fs->nactvar - 1).startpc = fs->pc;
 }