summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bugs30
1 files changed, 29 insertions, 1 deletions
diff --git a/bugs b/bugs
index a65f5474..878117b1 100644
--- a/bugs
+++ b/bugs
@@ -925,7 +925,7 @@ patch = [[
925} 925}
926 926
927 927
928@Bug{ 928Bug{
929what = [[lua_dostring/lua_dofile should return any values returned 929what = [[lua_dostring/lua_dofile should return any values returned
930by the chunk]], 930by the chunk]],
931 931
@@ -946,3 +946,31 @@ patch = [[
946]], 946]],
947 947
948} 948}
949
950
951Bug{
952
953what = [[garbage collector does not compensate enough for finalizers]],
954
955patch = [[
956lgc.c:
957@@ -322,4 +322,6 @@
958
959-static void propagateall (global_State *g) {
960- while (g->gray) propagatemark(g);
961+static size_t propagateall (global_State *g) {
962+ size_t m = 0;
963+ while (g->gray) m += propagatemark(g);
964+ return m;
965 }
966@@ -542,3 +544,3 @@
967 marktmu(g); /* mark `preserved' userdata */
968- propagateall(g); /* remark, to propagate `preserveness' */
969+ udsize += propagateall(g); /* remark, to propagate `preserveness' */
970 cleartable(g->weak); /* remove collected objects from weak tables */
971@@ -592,2 +594,4 @@
972 GCTM(L);
973+ if (g->estimate > GCFINALIZECOST)
974+ g->estimate -= GCFINALIZECOST;
975]]
976}