blob: f2310169225596ec57b85bcc2042e1e0254b5e5c [file] [log] [blame]
Ephemeron table can wrongly collect entry with strong key.
Fetch from: http://www.lua.org/bugs.html#5.2.3-2
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
Index: b/src/lgc.c
===================================================================
--- a/src/lgc.c
+++ b/src/lgc.c
@@ -403,7 +403,7 @@
reallymarkobject(g, gcvalue(gval(n))); /* mark it now */
}
}
- if (prop)
+ if (g->gcstate != GCSatomic || prop)
linktable(h, &g->ephemeron); /* have to propagate again */
else if (hasclears) /* does table have white keys? */
linktable(h, &g->allweak); /* may have to clean white keys */