Przeglądaj źródła

Prevent infinite loop and subsequent app crash on bad basal rate value (#89)

Joe Moran 4 lat temu
rodzic
commit
1cc95a11d6

+ 3 - 0
Dependencies/rileylink_ios/OmniKit/Model/BasalDeliveryTable.swift

@@ -212,6 +212,9 @@ public struct RateEntry {
                 remainingSegments -= 1
                 remainingSegments -= 1
             } else {
             } else {
                 let numSegments = min(maxSegmentsPerEntry, Int(round(remainingPulses / pulsesPerSegment)))
                 let numSegments = min(maxSegmentsPerEntry, Int(round(remainingPulses / pulsesPerSegment)))
+                if numSegments == 0 {
+                    break // prevent infinite loop and subsequent malloc crash with certain bad rate values
+                }
                 remainingSegments -= numSegments
                 remainingSegments -= numSegments
                 let pulseCount = pulsesPerSegment * Double(numSegments)
                 let pulseCount = pulsesPerSegment * Double(numSegments)
                 let entry = RateEntry(totalPulses: pulseCount, delayBetweenPulses: delayBetweenPulses)
                 let entry = RateEntry(totalPulses: pulseCount, delayBetweenPulses: delayBetweenPulses)