diff options
Diffstat (limited to 'byterun/finalise.c')
-rw-r--r-- | byterun/finalise.c | 3 |
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. |