aboutsummaryrefslogtreecommitdiff
path: root/lstate.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2014-02-18 10:39:37 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2014-02-18 10:39:37 -0300
commitd764cc552251fc69207c1bb4b34d3a6a5b7020c6 (patch)
tree7b1b6532af3d22da36118cc81b8256ab53b887bc /lstate.c
parentffa96d988d60f31591014fe417c27e44fc3116d1 (diff)
downloadlua-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.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/lstate.c b/lstate.c
index 4c768c07..bc235941 100644
--- a/lstate.c
+++ b/lstate.c
@@ -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;