Roberto Ierusalimschy wrote:
To test this theory, those with the bug could just remove the following
lines from luaF_close (lfunc.c:108):
unlinkupval(uv);
setobj(L, &uv->u.value, uv->v);
- if (isgray(o)) {
- gray2black(o); /* closed upvalues are never gray */
- luaC_barrier(L, uv, &uv->u.value);
- }
uv->v = &uv->u.value; /* now current value lives here */
luaC_linkupval(L, uv); /* link upvalue into `gcroot' list */
With this patch, it seems that I can no longer reproduce the previously fairly reproducable problem. Thanks! --Adam -- Adam D. Moss - adam@gimp.org