diff options
Diffstat (limited to 'lgc.c')
-rw-r--r-- | lgc.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lgc.c,v 2.98 2010/06/04 13:25:10 roberto Exp roberto $ | 2 | ** $Id: lgc.c,v 2.99 2010/06/07 16:55:34 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 | */ |
@@ -371,7 +371,7 @@ static int traverseephemeron (global_State *g, Table *h) { | |||
371 | if (ttisnil(gval(n))) /* entry is empty? */ | 371 | if (ttisnil(gval(n))) /* entry is empty? */ |
372 | removeentry(n); /* remove it */ | 372 | removeentry(n); /* remove it */ |
373 | else if (valiswhite(gval(n))) { /* value not marked yet? */ | 373 | else if (valiswhite(gval(n))) { /* value not marked yet? */ |
374 | if (iscleared(key2tval(n), 1)) /* key is not marked (yet)? */ | 374 | if (iscleared(gkey(n), 1)) /* key is not marked (yet)? */ |
375 | hasclears = 1; /* may have to propagate mark from key to value */ | 375 | hasclears = 1; /* may have to propagate mark from key to value */ |
376 | else { /* key is marked, so mark value */ | 376 | else { /* key is marked, so mark value */ |
377 | marked = 1; /* value was not marked */ | 377 | marked = 1; /* value was not marked */ |
@@ -574,7 +574,7 @@ static void cleartable (GCObject *l) { | |||
574 | } | 574 | } |
575 | for (n = gnode(h, 0); n < limit; n++) { | 575 | for (n = gnode(h, 0); n < limit; n++) { |
576 | if (!ttisnil(gval(n)) && /* non-empty entry? */ | 576 | if (!ttisnil(gval(n)) && /* non-empty entry? */ |
577 | (iscleared(key2tval(n), 1) || iscleared(gval(n), 0))) { | 577 | (iscleared(gkey(n), 1) || iscleared(gval(n), 0))) { |
578 | setnilvalue(gval(n)); /* remove value ... */ | 578 | setnilvalue(gval(n)); /* remove value ... */ |
579 | removeentry(n); /* and remove entry from table */ | 579 | removeentry(n); /* and remove entry from table */ |
580 | } | 580 | } |