|
@@ -1,4 +1,4 @@
|
|
|
---[[
|
|
|
+--[=[
|
|
|
** lua.stx / llex.c
|
|
|
Tue Dec 2 10:45:48 EDT 1997
|
|
|
>> BUG: "lastline" was not reset on function entry, so debug information
|
|
@@ -336,7 +336,7 @@ Thu Mar 20 11:40:12 EST 2003
|
|
|
|
|
|
|
|
|
|
|
|
---]]
|
|
|
+--]=]
|
|
|
-----------------------------------------------------------------
|
|
|
-- Lua 5.0 (final)
|
|
|
|
|
@@ -764,3 +764,36 @@ patch = [[
|
|
|
]],
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+Bug{
|
|
|
+what = [[weak tables that survive one collection are never collected]],
|
|
|
+
|
|
|
+report = [[Chromix, 02/01/2006]],
|
|
|
+
|
|
|
+example = [[
|
|
|
+a = {}
|
|
|
+print(gcinfo())
|
|
|
+for i = 1, 10000 do
|
|
|
+ a[i] = setmetatable({}, {__mode = "v"})
|
|
|
+end
|
|
|
+collectgarbage()
|
|
|
+a = nil
|
|
|
+collectgarbage()
|
|
|
+print(gcinfo())
|
|
|
+]],
|
|
|
+
|
|
|
+patch = [[
|
|
|
+* lgc.c
|
|
|
+@@ -366,7 +366,7 @@
|
|
|
+ GCObject *curr;
|
|
|
+ int count = 0; /* number of collected items */
|
|
|
+ while ((curr = *p) != NULL) {
|
|
|
+- if (curr->gch.marked > limit) {
|
|
|
++ if ((curr->gch.marked & ~(KEYWEAK | VALUEWEAK)) > limit) {
|
|
|
+ unmark(curr);
|
|
|
+ p = &curr->gch.next;
|
|
|
+ }
|
|
|
+]],
|
|
|
+
|
|
|
+}
|
|
|
+
|