@@ -110,12 +110,16 @@ public func -(time: DispatchTime, interval: DispatchTimeInterval) -> DispatchTim
110110}
111111
112112public 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) )
114116 return DispatchTime ( rawValue: t)
115117}
116118
117119public 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) )
119123 return DispatchTime ( rawValue: t)
120124}
121125
@@ -130,11 +134,15 @@ public func -(time: DispatchWallTime, interval: DispatchTimeInterval) -> Dispatc
130134}
131135
132136public 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) )
134140 return DispatchWallTime ( rawValue: t)
135141}
136142
137143public 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) )
139147 return DispatchWallTime ( rawValue: t)
140148}
0 commit comments