Browse Source

Prevent 32bit int overflow when calculating duration forr day

onevcat 6 năm trước cách đây
mục cha
commit
99c6a9f957
1 tập tin đã thay đổi với 3 bổ sung3 xóa
  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 secondsInOneMinute = 60
     static let minutesInOneHour = 60
     static let minutesInOneHour = 60
     static let hoursInOneDay = 24
     static let hoursInOneDay = 24
-    static let secondsInOneDay = secondsInOneMinute * minutesInOneHour * hoursInOneDay
+    static let secondsInOneDay = TimeInterval(secondsInOneMinute * minutesInOneHour * hoursInOneDay)
 }
 }
 
 
 /// Represents the expiration strategy used in storage.
 /// Represents the expiration strategy used in storage.
@@ -58,7 +58,7 @@ public enum StorageExpiration {
         case .seconds(let seconds):
         case .seconds(let seconds):
             return date.addingTimeInterval(seconds)
             return date.addingTimeInterval(seconds)
         case .days(let days):
         case .days(let days):
-            let duration = TimeInterval(TimeConstants.secondsInOneDay * days)
+            let duration = TimeConstants.secondsInOneDay * TimeInterval(days)
             return date.addingTimeInterval(duration)
             return date.addingTimeInterval(duration)
         case .date(let ref):
         case .date(let ref):
             return ref
             return ref
@@ -79,7 +79,7 @@ public enum StorageExpiration {
         switch self {
         switch self {
         case .never: return .infinity
         case .never: return .infinity
         case .seconds(let seconds): return seconds
         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 .date(let ref): return ref.timeIntervalSinceNow
         case .expired: return -(.infinity)
         case .expired: return -(.infinity)
         }
         }