From d6b34cec930a8e95bbcb616911e105990a57648b Mon Sep 17 00:00:00 2001 From: Casey Date: Tue, 5 May 2026 23:18:36 +0200 Subject: [PATCH] fix: prevent crash from force unwrap in UTMRegistry Replace unsafe force unwraps with compactMap and direct value iteration to prevent crashes during concurrent registry access. - Line 41: Use compactMap instead of entries[key]! - Line 126: Iterate entries.values instead of force-unwrapping by key --- Services/UTMRegistry.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Services/UTMRegistry.swift b/Services/UTMRegistry.swift index 1b5e6951..508fdbf3 100644 --- a/Services/UTMRegistry.swift +++ b/Services/UTMRegistry.swift @@ -37,8 +37,9 @@ class UTMRegistry: NSObject { @Published private var entries: [String: UTMRegistryEntry] { didSet { let toAdd = entries.keys.filter({ !changeListeners.keys.contains($0) }) - for key in toAdd { - let entry = entries[key]! + .compactMap { entries[$0] } + for entry in toAdd { + let key = entry.uuid.uuidString changeListeners[key] = entry.objectWillChange .debounce(for: .seconds(1), scheduler: DispatchQueue.global(qos: .utility)) .sink { [weak self, weak entry] in @@ -122,8 +123,7 @@ class UTMRegistry: NSObject { /// - Parameter entries: All entries to commit private func commitAll(entries: [String: UTMRegistryEntry]) { var newSerializedEntries: [String: Any] = [:] - for key in entries.keys { - let entry = entries[key]! + for entry in entries.values { commit(entry: entry, to: &newSerializedEntries) } serializedEntries = newSerializedEntries