lua

A copy of the Lua development repository
Log | Files | Refs | README

commit 4a7fe61806b266d895c0d2a4725dc427315022bb
parent 9243c414d92c253edd908f438caa31e2aa16f3f4
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date:   Fri, 23 Feb 2018 10:21:00 -0300

in 'clearbykeys', clear keys of just-removed entries too

Diffstat:
Mlgc.c | 6+++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lgc.c b/lgc.c @@ -1,5 +1,5 @@ /* -** $Id: lgc.c,v 2.248 2018/02/20 16:52:50 roberto Exp roberto $ +** $Id: lgc.c,v 2.250 2018/02/23 13:16:18 roberto Exp roberto $ ** Garbage Collector ** See Copyright Notice in lua.h */ @@ -688,10 +688,10 @@ static void clearbykeys (global_State *g, GCObject *l) { Node *limit = gnodelast(h); Node *n; for (n = gnode(h, 0); n < limit; n++) { + if (iscleared(g, gckeyN(n))) /* unmarked key? */ + setempty(gval(n)); /* remove entry */ if (isempty(gval(n))) /* is entry empty? */ clearkey(n); /* clear its key */ - else if (iscleared(g, gckeyN(n))) /* unmarked key? */ - setempty(gval(n)); /* remove entry */ } } }