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