diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2012-10-03 09:36:46 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2012-10-03 09:36:46 -0300 |
commit | 86b39206d998a184a105bfb63b630ed28e1c81bc (patch) | |
tree | 8d4cad30114addb437265532007e3b40db10eebd /ltests.c | |
parent | fdae4b9453fa7432f5b1a88c55dca33f1c861263 (diff) | |
download | lua-86b39206d998a184a105bfb63b630ed28e1c81bc.tar.gz lua-86b39206d998a184a105bfb63b630ed28e1c81bc.tar.bz2 lua-86b39206d998a184a105bfb63b630ed28e1c81bc.zip |
open upvalues cannot be old if thread is not old; when thread is old,
their list is not traversed anymore, and therefore can contain dead
elements.
Diffstat (limited to 'ltests.c')
-rw-r--r-- | ltests.c | 6 |
1 files changed, 2 insertions, 4 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: ltests.c,v 2.132 2012/07/04 15:52:38 roberto Exp roberto $ | 2 | ** $Id: ltests.c,v 2.133 2012/08/16 17:34:28 roberto Exp roberto $ |
3 | ** Internal Module for Debugging of the Lua Implementation | 3 | ** Internal Module for Debugging of the Lua Implementation |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -469,9 +469,7 @@ int lua_checkmemory (lua_State *L) { | |||
469 | lua_assert(uv->u.l.next->u.l.prev == uv && uv->u.l.prev->u.l.next == uv); | 469 | lua_assert(uv->u.l.next->u.l.prev == uv && uv->u.l.prev->u.l.next == uv); |
470 | lua_assert(uv->v != &uv->u.value); /* must be open */ | 470 | lua_assert(uv->v != &uv->u.value); /* must be open */ |
471 | lua_assert(!isblack(obj2gco(uv))); /* open upvalues are never black */ | 471 | lua_assert(!isblack(obj2gco(uv))); /* open upvalues are never black */ |
472 | if (isdead(g, obj2gco(uv))) | 472 | if (!isdead(g, obj2gco(uv))) |
473 | lua_assert(issweepphase(g)); | ||
474 | else | ||
475 | checkvalref(g, obj2gco(uv), uv->v); | 473 | checkvalref(g, obj2gco(uv), uv->v); |
476 | } | 474 | } |
477 | return 0; | 475 | return 0; |