Fix thread-safety crash in ProfileUpdateTask

Snapshot @Published properties before async suspension points to
prevent SIGBUS from corrupted pointers due to concurrent access.
This commit is contained in:
世界
2026-04-20 05:45:36 +08:00
parent d461714de8
commit 5318c1b84c
2 changed files with 8 additions and 4 deletions
+5 -2
View File
@@ -7,7 +7,8 @@ public extension Profile {
if type != .remote {
return
}
let remoteContent = try await HTTPClient.getStringAsync(remoteURL)
let url = remoteURL
let remoteContent = try await HTTPClient.getStringAsync(url)
try await BlockingIO.run {
var error: NSError?
LibboxCheckConfig(remoteContent, &error)
@@ -15,7 +16,9 @@ public extension Profile {
throw error
}
}
lastUpdated = Date()
await MainActor.run {
lastUpdated = Date()
}
try await ProfileManager.update(self)
do {
let oldContent = try await readAsync()