[Thomas: fix minor typo in commit title.]
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
--- /dev/null
+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 */