Browse Source

a small bug

Roberto Ierusalimschy 20 years ago
parent
commit
680fc88cc2
2 changed files with 5 additions and 4 deletions
  1. 2 1
      ldebug.c
  2. 3 3
      lgc.c

+ 2 - 1
ldebug.c

@@ -1,5 +1,5 @@
 /*
 /*
-** $Id: ldebug.c,v 2.24 2005/06/28 13:01:31 roberto Exp roberto $
+** $Id: ldebug.c,v 2.25 2005/07/11 13:59:03 roberto Exp roberto $
 ** Debug Interface
 ** Debug Interface
 ** See Copyright Notice in lua.h
 ** See Copyright Notice in lua.h
 */
 */
@@ -152,6 +152,7 @@ static void funcinfo (lua_Debug *ar, Closure *cl) {
   if (cl->c.isC) {
   if (cl->c.isC) {
     ar->source = "=[C]";
     ar->source = "=[C]";
     ar->linedefined = -1;
     ar->linedefined = -1;
+    ar->lastlinedefined = -1;
     ar->what = "C";
     ar->what = "C";
   }
   }
   else {
   else {

+ 3 - 3
lgc.c

@@ -1,5 +1,5 @@
 /*
 /*
-** $Id: lgc.c,v 2.33 2005/05/31 14:25:18 roberto Exp roberto $
+** $Id: lgc.c,v 2.34 2005/06/07 18:53:45 roberto Exp roberto $
 ** Garbage Collector
 ** Garbage Collector
 ** See Copyright Notice in lua.h
 ** See Copyright Notice in lua.h
 */
 */
@@ -528,10 +528,10 @@ static void remarkupvals (global_State *g) {
 static void atomic (lua_State *L) {
 static void atomic (lua_State *L) {
   global_State *g = G(L);
   global_State *g = G(L);
   size_t udsize;  /* total size of userdata to be finalized */
   size_t udsize;  /* total size of userdata to be finalized */
-  /* remark objects cautch by write barrier */
-  propagateall(g);
   /* remark occasional upvalues of (maybe) dead threads */
   /* remark occasional upvalues of (maybe) dead threads */
   remarkupvals(g);
   remarkupvals(g);
+  /* traverse objects cautch by write barrier and by 'remarkupvals' */
+  propagateall(g);
   /* remark weak tables */
   /* remark weak tables */
   g->gray = g->weak;
   g->gray = g->weak;
   g->weak = NULL;
   g->weak = NULL;