From c3488f51152ea2705ef6a256de7756cbeaf044f6 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Fri, 21 Mar 1997 18:39:57 -0300 Subject: [PATCH] must call "gc" i.m. for nil after all others. --- hash.c | 4 +--- table.c | 10 +++++++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/hash.c b/hash.c index 5386b364..8759938c 100644 --- a/hash.c +++ b/hash.c @@ -3,7 +3,7 @@ ** hash manager for lua */ -char *rcs_hash="$Id: hash.c,v 2.35 1997/03/11 18:44:28 roberto Exp roberto $"; +char *rcs_hash="$Id: hash.c,v 2.36 1997/03/19 19:41:10 roberto Exp roberto $"; #include "mem.h" @@ -170,8 +170,6 @@ void luaI_hashcallIM (void) avalue(&t) = curr_array; luaI_gcIM(&t); } - ttype(&t) = LUA_T_NIL; - luaI_gcIM(&t); /* end of list */ } diff --git a/table.c b/table.c index e545195f..c9bdafba 100644 --- a/table.c +++ b/table.c @@ -3,7 +3,7 @@ ** Module to control static tables */ -char *rcs_table="$Id: table.c,v 2.60 1997/03/11 18:44:28 roberto Exp roberto $"; +char *rcs_table="$Id: table.c,v 2.62 1997/03/21 18:52:37 roberto Exp $"; #include "mem.h" #include "opcode.h" @@ -157,6 +157,13 @@ int luaI_ismarked (Object *o) } +static void call_nilIM (void) +{ /* signals end of garbage collection */ + Object t; + ttype(&t) = LUA_T_NIL; + luaI_gcIM(&t); /* end of list */ +} + /* ** Garbage collection. ** Delete all unused strings and arrays. @@ -170,6 +177,7 @@ Long luaI_collectgarbage (void) luaI_travfallbacks(lua_markobject); /* mark fallbacks */ luaI_hashcallIM(); luaI_strcallIM(); + call_nilIM(); luaI_invalidaterefs(); recovered += lua_strcollector(); recovered += lua_hashcollector();