File tree 1 file changed +11
-4
lines changed
1 file changed +11
-4
lines changed Original file line number Diff line number Diff line change @@ -739,14 +739,21 @@ static void run_finalizers(void)
739
739
JL_GC_POP ();
740
740
}
741
741
742
- void jl_gc_run_all_finalizers ( void )
742
+ void schedule_all_finalizers ( arraylist_t * flist )
743
743
{
744
- for (size_t i = 0 ; i < finalizer_list . len ; i += 2 ) {
745
- jl_value_t * f = (jl_value_t * )finalizer_list . items [i + 1 ];
744
+ for (size_t i = 0 ; i < flist -> len ; i += 2 ) {
745
+ jl_value_t * f = (jl_value_t * )flist -> items [i + 1 ];
746
746
if (f != HT_NOTFOUND && !jl_is_cpointer (f )) {
747
- schedule_finalization (finalizer_list . items [i ], finalizer_list . items [i + 1 ]);
747
+ schedule_finalization (flist -> items [i ], flist -> items [i + 1 ]);
748
748
}
749
749
}
750
+ flist -> len = 0 ;
751
+ }
752
+
753
+ void jl_gc_run_all_finalizers (void )
754
+ {
755
+ schedule_all_finalizers (& finalizer_list );
756
+ schedule_all_finalizers (& finalizer_list_marked );
750
757
run_finalizers ();
751
758
}
752
759
You can’t perform that action at this time.
0 commit comments