File tree Expand file tree Collapse file tree 1 file changed +9
-2
lines changed Expand file tree Collapse file tree 1 file changed +9
-2
lines changed Original file line number Diff line number Diff line change @@ -238,8 +238,13 @@ public struct DispatchDataIterator : IteratorProtocol, Sequence {
238
238
var ptr : UnsafePointer < Void > ?
239
239
self . _count = 0
240
240
self . _data = CDispatch . dispatch_data_create_map ( _data. __wrapped, & ptr, & self . _count)
241
- self . _ptr = UnsafePointer ( ptr! )
241
+ self . _ptr = ptr . flatMap { UnsafePointer ( $0 ) }
242
242
self . _position = _data. startIndex
243
+
244
+ // The only time we expect a 'nil' pointer is when the data is empty.
245
+ if self . _ptr == nil {
246
+ assert ( self . _count == self . _position)
247
+ }
243
248
}
244
249
245
250
/// Advance to the next element and return it, or `nil` if no next
@@ -248,13 +253,15 @@ public struct DispatchDataIterator : IteratorProtocol, Sequence {
248
253
/// - Precondition: No preceding call to `self.next()` has returned `nil`.
249
254
public mutating func next( ) -> DispatchData . _Element ? {
250
255
if _position == _count { return nil }
256
+
257
+ assert ( _ptr != nil )
251
258
let element = _ptr [ _position] ;
252
259
_position = _position + 1
253
260
return element
254
261
}
255
262
256
263
internal let _data : dispatch_data_t
257
- internal var _ptr : UnsafePointer < UInt8 >
264
+ internal var _ptr : UnsafePointer < UInt8 > !
258
265
internal var _count : Int
259
266
internal var _position : DispatchData . Index
260
267
}
You can’t perform that action at this time.
0 commit comments