From 192ad6d42dd0733866977e19796cc7fbce86d0cc Mon Sep 17 00:00:00 2001 From: SpringsUp Date: Wed, 20 Jul 2016 07:16:44 +0200 Subject: [PATCH] [Data] fix crash when creating iterator of empty DispatchData --- src/swift/Data.swift | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/swift/Data.swift b/src/swift/Data.swift index 0d21e27c0..ebec5e5a4 100644 --- a/src/swift/Data.swift +++ b/src/swift/Data.swift @@ -238,14 +238,15 @@ public struct DispatchDataIterator : IteratorProtocol, Sequence { var ptr: UnsafePointer? self._count = 0 self._data = CDispatch.dispatch_data_create_map(_data.__wrapped, &ptr, &self._count) - self._ptr = UnsafePointer(ptr!) + self._ptr = UnsafePointer(ptr) self._position = _data.startIndex + + // The only time we expect a 'nil' pointer is when the data is empty. + assert(self._ptr != nil || self._count == self._position) } /// Advance to the next element and return it, or `nil` if no next /// element exists. - /// - /// - Precondition: No preceding call to `self.next()` has returned `nil`. public mutating func next() -> DispatchData._Element? { if _position == _count { return nil } let element = _ptr[_position]; @@ -254,7 +255,7 @@ public struct DispatchDataIterator : IteratorProtocol, Sequence { } internal let _data: dispatch_data_t - internal var _ptr: UnsafePointer + internal var _ptr: UnsafePointer! internal var _count: Int internal var _position: DispatchData.Index }