aboutsummaryrefslogtreecommitdiff
path: root/lgc.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2002-07-04 14:58:02 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2002-07-04 14:58:02 -0300
commit1ede98157db12ded9c6be1ed8ab8742bcf6c046d (patch)
tree51c77da6e65a908bf0ac06362a7f2d4e866ab0fa /lgc.c
parent3e52573c722190f4e5f9b996fe8eb7927b65e2a8 (diff)
downloadlua-1ede98157db12ded9c6be1ed8ab8742bcf6c046d.tar.gz
lua-1ede98157db12ded9c6be1ed8ab8742bcf6c046d.tar.bz2
lua-1ede98157db12ded9c6be1ed8ab8742bcf6c046d.zip
strings are always `strong' in weaktables
Diffstat (limited to 'lgc.c')
-rw-r--r--lgc.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/lgc.c b/lgc.c
index e5ecb9c6..c9bcf666 100644
--- a/lgc.c
+++ b/lgc.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lgc.c,v 1.139 2002/06/25 19:17:42 roberto Exp roberto $ 2** $Id: lgc.c,v 1.140 2002/07/01 17:06:58 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*/
@@ -263,15 +263,16 @@ static void propagatemarks (GCState *st) {
263 263
264static int hasmark (const TObject *o) { 264static int hasmark (const TObject *o) {
265 switch (ttype(o)) { 265 switch (ttype(o)) {
266 case LUA_TSTRING:
267 return tsvalue(o)->tsv.marked;
268 case LUA_TUSERDATA: 266 case LUA_TUSERDATA:
269 return isudmarked(uvalue(o)); 267 return isudmarked(uvalue(o));
270 case LUA_TTABLE: 268 case LUA_TTABLE:
271 return ismarked(hvalue(o)); 269 return ismarked(hvalue(o));
272 case LUA_TFUNCTION: 270 case LUA_TFUNCTION:
273 return clvalue(o)->c.marked; 271 return clvalue(o)->c.marked;
274 default: /* number, nil, boolean */ 272 case LUA_TSTRING:
273 strmark(tsvalue(o)); /* strings are `values', so are never weak */
274 /* go through */
275 default: /* number, nil, boolean, udataval */
275 return 1; 276 return 1;
276 } 277 }
277} 278}