nasty GC bug: upvalue must be turned white when not keeping invariant,

but barrier was not being called when uv->v were already white.
This commit is contained in:
Roberto Ierusalimschy
2010-04-29 18:43:36 -03:00
parent 5d79c6684b
commit 23001d8607
3 changed files with 26 additions and 9 deletions

5
lgc.h
View File

@@ -1,5 +1,5 @@
/*
** $Id: lgc.h,v 2.30 2010/03/25 13:06:36 roberto Exp roberto $
** $Id: lgc.h,v 2.31 2010/04/29 17:32:40 roberto Exp roberto $
** Garbage Collector
** See Copyright Notice in lua.h
*/
@@ -9,6 +9,7 @@
#include "lobject.h"
#include "lstate.h"
/*
@@ -120,6 +121,6 @@ LUAI_FUNC GCObject *luaC_newobj (lua_State *L, int tt, size_t sz,
LUAI_FUNC void luaC_barrierf (lua_State *L, GCObject *o, GCObject *v);
LUAI_FUNC void luaC_barrierback (lua_State *L, Table *t);
LUAI_FUNC void luaC_checkfinalizer (lua_State *L, Udata *u);
LUAI_FUNC void luaC_checkupvalcolor (global_State *g, UpVal *uv);
#endif