@@ -527,6 +527,10 @@ extension ProgressManager {
527
527
if childPropertyState. isDirty {
528
528
if let child = child. manager {
529
529
dirtyChildren. append ( ( idx, child) )
530
+ } else {
531
+ // Child is dirty but manager is deallocated - use last known value
532
+ let isAlive = false
533
+ nonDirtySummaries. append ( ( idx, childPropertyState. value, isAlive) )
530
534
}
531
535
} else {
532
536
let isAlive = child. manager != nil
@@ -536,6 +540,10 @@ extension ProgressManager {
536
540
// Property doesn't exist yet in child - need to fetch it
537
541
if let child = child. manager {
538
542
dirtyChildren. append ( ( idx, child) )
543
+ } else {
544
+ // Child manager is deallocated, use default value
545
+ let isAlive = false
546
+ nonDirtySummaries. append ( ( idx, property. defaultValue, isAlive) )
539
547
}
540
548
}
541
549
}
@@ -590,6 +598,10 @@ extension ProgressManager {
590
598
if childPropertyState. isDirty {
591
599
if let child = child. manager {
592
600
dirtyChildren. append ( ( idx, child) )
601
+ } else {
602
+ // Child is dirty but manager is deallocated - use last known value
603
+ let isAlive = false
604
+ nonDirtySummaries. append ( ( idx, childPropertyState. value, isAlive) )
593
605
}
594
606
} else {
595
607
let isAlive = child. manager != nil
@@ -599,6 +611,10 @@ extension ProgressManager {
599
611
// Property doesn't exist yet in child - need to fetch it
600
612
if let child = child. manager {
601
613
dirtyChildren. append ( ( idx, child) )
614
+ } else {
615
+ // Child manager is deallocated, use default value
616
+ let isAlive = false
617
+ nonDirtySummaries. append ( ( idx, property. defaultValue, isAlive) )
602
618
}
603
619
}
604
620
}
@@ -653,6 +669,10 @@ extension ProgressManager {
653
669
if childPropertyState. isDirty {
654
670
if let child = child. manager {
655
671
dirtyChildren. append ( ( idx, child) )
672
+ } else {
673
+ // Child is dirty but manager is deallocated - use last known value
674
+ let isAlive = false
675
+ nonDirtySummaries. append ( ( idx, childPropertyState. value, isAlive) )
656
676
}
657
677
} else {
658
678
let isAlive = child. manager != nil
@@ -662,6 +682,10 @@ extension ProgressManager {
662
682
// Property doesn't exist yet in child - need to fetch it
663
683
if let child = child. manager {
664
684
dirtyChildren. append ( ( idx, child) )
685
+ } else {
686
+ // Child manager is deallocated, use default value
687
+ let isAlive = false
688
+ nonDirtySummaries. append ( ( idx, property. defaultValue, isAlive) )
665
689
}
666
690
}
667
691
}
@@ -716,6 +740,10 @@ extension ProgressManager {
716
740
if childPropertyState. isDirty {
717
741
if let child = child. manager {
718
742
dirtyChildren. append ( ( idx, child) )
743
+ } else {
744
+ // Child is dirty but manager is deallocated - use last known value
745
+ let isAlive = false
746
+ nonDirtySummaries. append ( ( idx, childPropertyState. value, isAlive) )
719
747
}
720
748
} else {
721
749
let isAlive = child. manager != nil
@@ -725,6 +753,10 @@ extension ProgressManager {
725
753
// Property doesn't exist yet in child - need to fetch it
726
754
if let child = child. manager {
727
755
dirtyChildren. append ( ( idx, child) )
756
+ } else {
757
+ // Child manager is deallocated, use default value
758
+ let isAlive = false
759
+ nonDirtySummaries. append ( ( idx, property. defaultSummary, isAlive) )
728
760
}
729
761
}
730
762
}
@@ -779,6 +811,10 @@ extension ProgressManager {
779
811
if childPropertyState. isDirty {
780
812
if let child = child. manager {
781
813
dirtyChildren. append ( ( idx, child) )
814
+ } else {
815
+ // Child is dirty but manager is deallocated - use last known value
816
+ let isAlive = false
817
+ nonDirtySummaries. append ( ( idx, childPropertyState. value, isAlive) )
782
818
}
783
819
} else {
784
820
let isAlive = child. manager != nil
@@ -788,6 +824,10 @@ extension ProgressManager {
788
824
// Property doesn't exist yet in child - need to fetch it
789
825
if let child = child. manager {
790
826
dirtyChildren. append ( ( idx, child) )
827
+ } else {
828
+ // Child manager is deallocated, use default value
829
+ let isAlive = false
830
+ nonDirtySummaries. append ( ( idx, property. defaultSummary, isAlive) )
791
831
}
792
832
}
793
833
}
@@ -842,6 +882,10 @@ extension ProgressManager {
842
882
if childPropertyState. isDirty {
843
883
if let child = child. manager {
844
884
dirtyChildren. append ( ( idx, child) )
885
+ } else {
886
+ // Child is dirty but manager is deallocated - use last known value
887
+ let isAlive = false
888
+ nonDirtySummaries. append ( ( idx, childPropertyState. value, isAlive) )
845
889
}
846
890
} else {
847
891
let isAlive = child. manager != nil
@@ -851,6 +895,10 @@ extension ProgressManager {
851
895
// Property doesn't exist yet in child - need to fetch it
852
896
if let child = child. manager {
853
897
dirtyChildren. append ( ( idx, child) )
898
+ } else {
899
+ // Child manager is deallocated, use default value
900
+ let isAlive = false
901
+ nonDirtySummaries. append ( ( idx, property. defaultSummary, isAlive) )
854
902
}
855
903
}
856
904
}
@@ -905,6 +953,10 @@ extension ProgressManager {
905
953
if childPropertyState. isDirty {
906
954
if let child = child. manager {
907
955
dirtyChildren. append ( ( idx, child) )
956
+ } else {
957
+ // Child is dirty but manager is deallocated - use last known value
958
+ let isAlive = false
959
+ nonDirtySummaries. append ( ( idx, childPropertyState. value, isAlive) )
908
960
}
909
961
} else {
910
962
let isAlive = child. manager != nil
@@ -914,6 +966,10 @@ extension ProgressManager {
914
966
// Property doesn't exist yet in child - need to fetch it
915
967
if let child = child. manager {
916
968
dirtyChildren. append ( ( idx, child) )
969
+ } else {
970
+ // Child manager is deallocated, use default value
971
+ let isAlive = false
972
+ nonDirtySummaries. append ( ( idx, property. defaultValue, isAlive) )
917
973
}
918
974
}
919
975
}
0 commit comments