aboutsummaryrefslogtreecommitdiff
path: root/lgc.c
diff options
context:
space:
mode:
Diffstat (limited to 'lgc.c')
-rw-r--r--lgc.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/lgc.c b/lgc.c
index bc0494f0..3bcfd1b7 100644
--- a/lgc.c
+++ b/lgc.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lgc.c,v 1.56 2000/06/08 17:48:31 roberto Exp roberto $ 2** $Id: lgc.c,v 1.57 2000/06/12 13:52:05 roberto Exp roberto $
3** Garbage Collector 3** Garbage Collector
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -41,7 +41,7 @@ static void protomark (lua_State *L, Proto *f) {
41 protomark(L, f->kproto[i]); 41 protomark(L, f->kproto[i]);
42 if (f->locvars) { /* is there debug information? */ 42 if (f->locvars) { /* is there debug information? */
43 LocVar *lv; 43 LocVar *lv;
44 for (lv=f->locvars; lv->line != -1; lv++) /* mark local-variable names */ 44 for (lv=f->locvars; lv->pc != -1; lv++) /* mark local-variable names */
45 if (lv->varname) strmark(L, lv->varname); 45 if (lv->varname) strmark(L, lv->varname);
46 } 46 }
47 } 47 }
@@ -99,9 +99,16 @@ static int markobject (lua_State *L, TObject *o) {
99 case TAG_TABLE: 99 case TAG_TABLE:
100 tablemark(L, hvalue(o)); 100 tablemark(L, hvalue(o));
101 break; 101 break;
102 case TAG_LCLOSURE: case TAG_LMARK: 102 case TAG_LCLOSURE:
103 protomark(L, clvalue(o)->f.l); 103 protomark(L, clvalue(o)->f.l);
104 /* go trhough */ 104 closuremark(L, clvalue(o));
105 break;
106 case TAG_LMARK: {
107 Closure *cl = infovalue(o)->func;
108 protomark(L, cl->f.l);
109 closuremark(L, cl);
110 break;
111 }
105 case TAG_CCLOSURE: case TAG_CMARK: 112 case TAG_CCLOSURE: case TAG_CMARK:
106 closuremark(L, clvalue(o)); 113 closuremark(L, clvalue(o));
107 break; 114 break;