summaryrefslogtreecommitdiffstats
path: root/byterun/finalise.c
diff options
context:
space:
mode:
Diffstat (limited to 'byterun/finalise.c')
-rw-r--r--byterun/finalise.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/byterun/finalise.c b/byterun/finalise.c
index 62139e207..9f96a3069 100644
--- a/byterun/finalise.c
+++ b/byterun/finalise.c
@@ -40,6 +40,7 @@ static unsigned long old = 0, young = 0, active = 0, size = 0;
void final_update (void)
{
unsigned long i;
+ unsigned long oldactive = active;
Assert (young == old);
Assert (young <= active);
@@ -47,13 +48,13 @@ void final_update (void)
Assert (Is_block (final_table[i].val) && Is_in_heap (final_table[i].val));
if (Is_white_val (final_table[i].val)){
struct final f = final_table[i];
- darken (f.val, NULL);
final_table[i] = final_table[--old];
final_table[--active] = f;
-- i;
}
}
young = old;
+ for (i = active; i < oldactive; i++) darken (final_table[i].val, NULL);
}
/* Call the finalisation functions for the finalising set.