@@ -111,12 +111,16 @@ public func -(time: DispatchTime, interval: DispatchTimeInterval) -> DispatchTim
111
111
}
112
112
113
113
public func + ( time: DispatchTime , seconds: Double ) -> DispatchTime {
114
- let t = __dispatch_time ( time. rawValue, Int64 ( seconds * Double( NSEC_PER_SEC) ) )
114
+ let interval = seconds * Double( NSEC_PER_SEC)
115
+ let t = __dispatch_time ( time. rawValue,
116
+ interval. isInfinite || interval. isNaN ? Int64 . max : Int64 ( interval) )
115
117
return DispatchTime ( rawValue: t)
116
118
}
117
119
118
120
public func - ( time: DispatchTime , seconds: Double ) -> DispatchTime {
119
- let t = __dispatch_time ( time. rawValue, Int64 ( - seconds * Double( NSEC_PER_SEC) ) )
121
+ let interval = - seconds * Double( NSEC_PER_SEC)
122
+ let t = __dispatch_time ( time. rawValue,
123
+ interval. isInfinite || interval. isNaN ? Int64 . min : Int64 ( interval) )
120
124
return DispatchTime ( rawValue: t)
121
125
}
122
126
@@ -131,11 +135,15 @@ public func -(time: DispatchWallTime, interval: DispatchTimeInterval) -> Dispatc
131
135
}
132
136
133
137
public func + ( time: DispatchWallTime , seconds: Double ) -> DispatchWallTime {
134
- let t = __dispatch_time ( time. rawValue, Int64 ( seconds * Double( NSEC_PER_SEC) ) )
138
+ let interval = seconds * Double( NSEC_PER_SEC)
139
+ let t = __dispatch_time ( time. rawValue,
140
+ interval. isInfinite || interval. isNaN ? Int64 . max : Int64 ( interval) )
135
141
return DispatchWallTime ( rawValue: t)
136
142
}
137
143
138
144
public func - ( time: DispatchWallTime , seconds: Double ) -> DispatchWallTime {
139
- let t = __dispatch_time ( time. rawValue, Int64 ( - seconds * Double( NSEC_PER_SEC) ) )
145
+ let interval = - seconds * Double( NSEC_PER_SEC)
146
+ let t = __dispatch_time ( time. rawValue,
147
+ interval. isInfinite || interval. isNaN ? Int64 . min : Int64 ( interval) )
140
148
return DispatchWallTime ( rawValue: t)
141
149
}
0 commit comments