strings are always `strong' in weaktables

This commit is contained in:
Roberto Ierusalimschy
2002-07-04 14:58:02 -03:00
parent 3e52573c72
commit 1ede98157d
2 changed files with 8 additions and 7 deletions

9
lgc.c
View File

@@ -1,5 +1,5 @@
/*
** $Id: lgc.c,v 1.139 2002/06/25 19:17:42 roberto Exp roberto $
** $Id: lgc.c,v 1.140 2002/07/01 17:06:58 roberto Exp roberto $
** Garbage Collector
** See Copyright Notice in lua.h
*/
@@ -263,15 +263,16 @@ static void propagatemarks (GCState *st) {
static int hasmark (const TObject *o) {
switch (ttype(o)) {
case LUA_TSTRING:
return tsvalue(o)->tsv.marked;
case LUA_TUSERDATA:
return isudmarked(uvalue(o));
case LUA_TTABLE:
return ismarked(hvalue(o));
case LUA_TFUNCTION:
return clvalue(o)->c.marked;
default: /* number, nil, boolean */
case LUA_TSTRING:
strmark(tsvalue(o)); /* strings are `values', so are never weak */
/* go through */
default: /* number, nil, boolean, udataval */
return 1;
}
}