diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2014-02-18 10:39:37 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2014-02-18 10:39:37 -0300 |
commit | d764cc552251fc69207c1bb4b34d3a6a5b7020c6 (patch) | |
tree | 7b1b6532af3d22da36118cc81b8256ab53b887bc /lstate.c | |
parent | ffa96d988d60f31591014fe417c27e44fc3116d1 (diff) | |
download | lua-d764cc552251fc69207c1bb4b34d3a6a5b7020c6.tar.gz lua-d764cc552251fc69207c1bb4b34d3a6a5b7020c6.tar.bz2 lua-d764cc552251fc69207c1bb4b34d3a6a5b7020c6.zip |
new list 'twups' to allow traversal of upvalues from dead threads
(+ fixed some problems with cycles involving those upvalues)
Diffstat (limited to 'lstate.c')
-rw-r--r-- | lstate.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lstate.c,v 2.118 2014/02/13 12:11:34 roberto Exp roberto $ | 2 | ** $Id: lstate.c,v 2.119 2014/02/13 14:46:38 roberto Exp roberto $ |
3 | ** Global State | 3 | ** Global State |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -222,6 +222,7 @@ static void preinit_thread (lua_State *L, global_State *g) { | |||
222 | L->stack = NULL; | 222 | L->stack = NULL; |
223 | L->ci = NULL; | 223 | L->ci = NULL; |
224 | L->stacksize = 0; | 224 | L->stacksize = 0; |
225 | L->twups = L; /* thread has no upvalues */ | ||
225 | L->errorJmp = NULL; | 226 | L->errorJmp = NULL; |
226 | L->nCcalls = 0; | 227 | L->nCcalls = 0; |
227 | L->hook = NULL; | 228 | L->hook = NULL; |
@@ -317,6 +318,7 @@ LUA_API lua_State *lua_newstate (lua_Alloc f, void *ud) { | |||
317 | g->sweepgc = NULL; | 318 | g->sweepgc = NULL; |
318 | g->gray = g->grayagain = NULL; | 319 | g->gray = g->grayagain = NULL; |
319 | g->weak = g->ephemeron = g->allweak = NULL; | 320 | g->weak = g->ephemeron = g->allweak = NULL; |
321 | g->twups = NULL; | ||
320 | g->totalbytes = sizeof(LG); | 322 | g->totalbytes = sizeof(LG); |
321 | g->GCdebt = 0; | 323 | g->GCdebt = 0; |
322 | g->gcfinnum = 0; | 324 | g->gcfinnum = 0; |