diff --git a/LoopFollow/Controllers/Alarms.swift b/LoopFollow/Controllers/Alarms.swift index 87b34e9d7..d5c937474 100644 --- a/LoopFollow/Controllers/Alarms.swift +++ b/LoopFollow/Controllers/Alarms.swift @@ -27,7 +27,7 @@ extension MainViewController { let date = Date() let now = date.timeIntervalSince1970 let currentBG = bgs[bgs.count - 1].sgv - let lastBG = bgs[bgs.count - 2].sgv + //let lastBG = bgs[bgs.count - 2].sgv // not used, protect index out of bounds var skipZero = false if UserDefaultsRepository.alertIgnoreZero.value && currentBG == 0 { @@ -185,8 +185,8 @@ extension MainViewController { } } - // Check Low - let persistentLowReadings = Int(UserDefaultsRepository.alertLowPersistent.value / 5) + // Check Low, protect index out of bounds + let persistentLowReadings = min(Int(UserDefaultsRepository.alertLowPersistent.value / 5), bgData.count - 1) let persistentLowBG = bgData[bgData.count - 1 - persistentLowReadings].sgv let persistentLowTriggerImmediatelyBG = UserDefaultsRepository.alertLowBG.value - UserDefaultsRepository.alertLowPersistenceMax.value @@ -241,8 +241,8 @@ extension MainViewController { } - // Check High - let persistentHighReadings = Int(UserDefaultsRepository.alertHighPersistent.value / 5) + // Check High, protect index out of bounds + let persistentHighReadings = min(Int(UserDefaultsRepository.alertHighPersistent.value / 5), bgData.count-1) let persistentHighBG = bgData[bgData.count - 1 - persistentHighReadings].sgv if UserDefaultsRepository.alertHighActive.value && !UserDefaultsRepository.alertHighIsSnoozed.value && diff --git a/LoopFollow/Controllers/Nightscout/BGData.swift b/LoopFollow/Controllers/Nightscout/BGData.swift index 220cd121a..7ff725656 100644 --- a/LoopFollow/Controllers/Nightscout/BGData.swift +++ b/LoopFollow/Controllers/Nightscout/BGData.swift @@ -220,7 +220,7 @@ extension MainViewController { self.writeDebugLog(value: "Num BG: " + self.bgData.count.description) } let entries = self.bgData - if entries.count < 1 { return } + if entries.count < 2 { return } // protect index out of bounds self.updateBGGraph() self.updateStats() diff --git a/LoopFollow/ViewControllers/MainViewController.swift b/LoopFollow/ViewControllers/MainViewController.swift index 085c43e79..6f89f79dc 100644 --- a/LoopFollow/ViewControllers/MainViewController.swift +++ b/LoopFollow/ViewControllers/MainViewController.swift @@ -688,7 +688,10 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele } // Create Event info - let deltaBG = self.bgData[self.bgData.count - 1].sgv - self.bgData[self.bgData.count - 2].sgv as Int + var deltaBG = 0 // protect index out of bounds + if self.bgData.count > 1 { + deltaBG = self.bgData[self.bgData.count - 1].sgv - self.bgData[self.bgData.count - 2].sgv as Int + } let deltaTime = (TimeInterval(Date().timeIntervalSince1970) - self.bgData[self.bgData.count - 1].date) / 60 var deltaString = "" if deltaBG < 0 {