From ac017de1e5a5b4d41bb71509f7d663f98adbf80a Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Sat, 19 Nov 2022 12:35:50 -0800 Subject: [PATCH] Fix nil firmware version crash --- Meshtastic/Helpers/BLEManager.swift | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index 916577a0..6781cfac 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -487,10 +487,18 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph // MyInfo if decodedInfo.myInfo.isInitialized && decodedInfo.myInfo.myNodeNum > 0 { + let lastDotIndex = decodedInfo.myInfo.firmwareVersion.lastIndex(of: ".") - let version = decodedInfo.myInfo.firmwareVersion[...(lastDotIndex ?? String.Index(utf16Offset: 6, in: decodedInfo.myInfo.firmwareVersion))] - nowKnown = true - connectedVersion = String(version) + + if lastDotIndex == nil { + invalidVersion = true + connectedVersion = "0.0.0" + } else { + let version = decodedInfo.myInfo.firmwareVersion[...(lastDotIndex ?? String.Index(utf16Offset: 6, in: decodedInfo.myInfo.firmwareVersion))] + nowKnown = true + connectedVersion = String(version) + } + let supportedVersion = connectedVersion == "0.0.0" || self.minimumVersion.compare(connectedVersion, options: .numeric) == .orderedAscending || minimumVersion.compare(connectedVersion, options: .numeric) == .orderedSame if !supportedVersion { invalidVersion = true