@@ -971,6 +971,10 @@ extension ProgressManager {
971971 if child. totalFileCountSummary. isDirty {
972972 if let child = child. manager {
973973 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) )
974978 }
975979 } else {
976980 let isAlive = child. manager != nil
@@ -996,6 +1000,10 @@ extension ProgressManager {
9961000 if child. completedFileCountSummary. isDirty {
9971001 if let child = child. manager {
9981002 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) )
9991007 }
10001008 } else {
10011009 let isAlive = child. manager != nil
@@ -1076,6 +1084,10 @@ extension ProgressManager {
10761084 if child. totalByteCountSummary. isDirty {
10771085 if let child = child. manager {
10781086 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) )
10791091 }
10801092 } else {
10811093 let isAlive = child. manager != nil
@@ -1101,6 +1113,10 @@ extension ProgressManager {
11011113 if child. completedByteCountSummary. isDirty {
11021114 if let child = child. manager {
11031115 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) )
11041120 }
11051121 } else {
11061122 let isAlive = child. manager != nil
@@ -1176,6 +1192,10 @@ extension ProgressManager {
11761192 if child. throughputSummary. isDirty {
11771193 if let child = child. manager {
11781194 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) )
11791199 }
11801200 } else {
11811201 let isAlive = child. manager != nil
@@ -1230,6 +1250,10 @@ extension ProgressManager {
12301250 if child. estimatedTimeRemainingSummary. isDirty {
12311251 if let child = child. manager {
12321252 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) )
12331257 }
12341258 } else {
12351259 let isAlive = child. manager != nil
0 commit comments