Skip to content

Commit a33d2a6

Browse files
committed
fix regressing behavior in defined custom properties
1 parent 89aeff6 commit a33d2a6

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

Sources/FoundationEssentials/ProgressManager/ProgressManager+State.swift

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)