Explorar o código

Prevent 32bit int overflow when calculating duration forr day

onevcat %!s(int64=6) %!d(string=hai) anos
pai
achega
99c6a9f957
Modificáronse 1 ficheiros con 3 adicións e 3 borrados
  1. 3 3
      Sources/Cache/Storage.swift

+ 3 - 3
Sources/Cache/Storage.swift

@@ -31,7 +31,7 @@ struct TimeConstants {
     static let secondsInOneMinute = 60
     static let minutesInOneHour = 60
     static let hoursInOneDay = 24
-    static let secondsInOneDay = secondsInOneMinute * minutesInOneHour * hoursInOneDay
+    static let secondsInOneDay = TimeInterval(secondsInOneMinute * minutesInOneHour * hoursInOneDay)
 }
 
 /// Represents the expiration strategy used in storage.
@@ -58,7 +58,7 @@ public enum StorageExpiration {
         case .seconds(let seconds):
             return date.addingTimeInterval(seconds)
         case .days(let days):
-            let duration = TimeInterval(TimeConstants.secondsInOneDay * days)
+            let duration = TimeConstants.secondsInOneDay * TimeInterval(days)
             return date.addingTimeInterval(duration)
         case .date(let ref):
             return ref
@@ -79,7 +79,7 @@ public enum StorageExpiration {
         switch self {
         case .never: return .infinity
         case .seconds(let seconds): return seconds
-        case .days(let days): return TimeInterval(TimeConstants.secondsInOneDay * days)
+        case .days(let days): return TimeConstants.secondsInOneDay * TimeInterval(days)
         case .date(let ref): return ref.timeIntervalSinceNow
         case .expired: return -(.infinity)
         }