aboutsummaryrefslogtreecommitdiff
path: root/lgc.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2018-02-23 10:21:27 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2018-02-23 10:21:27 -0300
commit4a7fe61806b266d895c0d2a4725dc427315022bb (patch)
tree2dfcfd47c4269ff0d5b83a51a1365b7832e76ab0 /lgc.c
parent9243c414d92c253edd908f438caa31e2aa16f3f4 (diff)
downloadlua-4a7fe61806b266d895c0d2a4725dc427315022bb.tar.gz
lua-4a7fe61806b266d895c0d2a4725dc427315022bb.tar.bz2
lua-4a7fe61806b266d895c0d2a4725dc427315022bb.zip
in 'clearbykeys', clear keys of just-removed entries too
Diffstat (limited to 'lgc.c')
-rw-r--r--lgc.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/lgc.c b/lgc.c
index 8245dc21..13f372d3 100644
--- a/lgc.c
+++ b/lgc.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lgc.c,v 2.248 2018/02/20 16:52:50 roberto Exp roberto $ 2** $Id: lgc.c,v 2.250 2018/02/23 13:16:18 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*/
@@ -688,10 +688,10 @@ static void clearbykeys (global_State *g, GCObject *l) {
688 Node *limit = gnodelast(h); 688 Node *limit = gnodelast(h);
689 Node *n; 689 Node *n;
690 for (n = gnode(h, 0); n < limit; n++) { 690 for (n = gnode(h, 0); n < limit; n++) {
691 if (iscleared(g, gckeyN(n))) /* unmarked key? */
692 setempty(gval(n)); /* remove entry */
691 if (isempty(gval(n))) /* is entry empty? */ 693 if (isempty(gval(n))) /* is entry empty? */
692 clearkey(n); /* clear its key */ 694 clearkey(n); /* clear its key */
693 else if (iscleared(g, gckeyN(n))) /* unmarked key? */
694 setempty(gval(n)); /* remove entry */
695 } 695 }
696 } 696 }
697} 697}