@@ -971,6 +971,10 @@ extension ProgressManager {
971
971
if child. totalFileCountSummary. isDirty {
972
972
if let child = child. manager {
973
973
dirtyChildren. append ( ( idx, child) )
974
+ } else {
975
+ // Child is dirty but manager is deallocated - use last known value
976
+ let isAlive = false
977
+ nonDirtySummaries. append ( ( idx, child. totalFileCountSummary. value, isAlive) )
974
978
}
975
979
} else {
976
980
let isAlive = child. manager != nil
@@ -996,6 +1000,10 @@ extension ProgressManager {
996
1000
if child. completedFileCountSummary. isDirty {
997
1001
if let child = child. manager {
998
1002
dirtyChildren. append ( ( idx, child) )
1003
+ } else {
1004
+ // Child is dirty but manager is deallocated - use last known value
1005
+ let isAlive = false
1006
+ nonDirtySummaries. append ( ( idx, child. completedFileCountSummary. value, isAlive) )
999
1007
}
1000
1008
} else {
1001
1009
let isAlive = child. manager != nil
@@ -1076,6 +1084,10 @@ extension ProgressManager {
1076
1084
if child. totalByteCountSummary. isDirty {
1077
1085
if let child = child. manager {
1078
1086
dirtyChildren. append ( ( idx, child) )
1087
+ } else {
1088
+ // Child is dirty but manager is deallocated - use last known value
1089
+ let isAlive = false
1090
+ nonDirtySummaries. append ( ( idx, child. totalByteCountSummary. value, isAlive) )
1079
1091
}
1080
1092
} else {
1081
1093
let isAlive = child. manager != nil
@@ -1101,6 +1113,10 @@ extension ProgressManager {
1101
1113
if child. completedByteCountSummary. isDirty {
1102
1114
if let child = child. manager {
1103
1115
dirtyChildren. append ( ( idx, child) )
1116
+ } else {
1117
+ // Child is dirty but manager is deallocated - use last known value
1118
+ let isAlive = false
1119
+ nonDirtySummaries. append ( ( idx, child. completedByteCountSummary. value, isAlive) )
1104
1120
}
1105
1121
} else {
1106
1122
let isAlive = child. manager != nil
@@ -1176,6 +1192,10 @@ extension ProgressManager {
1176
1192
if child. throughputSummary. isDirty {
1177
1193
if let child = child. manager {
1178
1194
dirtyChildren. append ( ( idx, child) )
1195
+ } else {
1196
+ // Child is dirty but manager is deallocated - use last known value
1197
+ let isAlive = false
1198
+ nonDirtySummaries. append ( ( idx, child. throughputSummary. value, isAlive) )
1179
1199
}
1180
1200
} else {
1181
1201
let isAlive = child. manager != nil
@@ -1230,6 +1250,10 @@ extension ProgressManager {
1230
1250
if child. estimatedTimeRemainingSummary. isDirty {
1231
1251
if let child = child. manager {
1232
1252
dirtyChildren. append ( ( idx, child) )
1253
+ } else {
1254
+ // Child is dirty but manager is deallocated - use last known value
1255
+ let isAlive = false
1256
+ nonDirtySummaries. append ( ( idx, child. estimatedTimeRemainingSummary. value, isAlive) )
1233
1257
}
1234
1258
} else {
1235
1259
let isAlive = child. manager != nil
0 commit comments