@@ -92,11 +92,13 @@ public struct DispatchData : RandomAccessCollection {
92
92
public func enumerateBytes(
93
93
block: ( _ buffer: UnsafeBufferPointer < UInt8 > , _ byteIndex: Int , _ stop: inout Bool ) -> Void )
94
94
{
95
- _swift_dispatch_data_apply ( __wrapped. __wrapped) { ( data: dispatch_data_t , offset: Int , ptr: UnsafeRawPointer , size: Int ) in
95
+ // FIXME: When SR-2313 (withoutActuallyEscaping) is implemented, use it to replace unsafeBitCast
96
+ let nonEscapingBlock = unsafeBitCast ( block, to: _enumerateBytesBlock. self)
97
+ _ = CDispatch . dispatch_data_apply ( __wrapped. __wrapped) { ( _, offset: Int , ptr: UnsafeRawPointer , size: Int ) in
96
98
let bytePtr = ptr. bindMemory ( to: UInt8 . self, capacity: size)
97
99
let bp = UnsafeBufferPointer ( start: bytePtr, count: size)
98
100
var stop = false
99
- block ( bp, offset, & stop)
101
+ nonEscapingBlock ( bp, offset, & stop)
100
102
return !stop
101
103
}
102
104
}
@@ -275,10 +277,7 @@ public struct DispatchDataIterator : IteratorProtocol, Sequence {
275
277
internal var _position : DispatchData . Index
276
278
}
277
279
278
- typealias _swift_data_applier = @convention ( block) ( dispatch_data_t , Int , UnsafeRawPointer , Int ) -> Bool
279
-
280
- @_silgen_name ( " _swift_dispatch_data_apply " )
281
- internal func _swift_dispatch_data_apply( _ data: dispatch_data_t , _ block: _swift_data_applier )
280
+ typealias _enumerateBytesBlock = ( _ buffer: UnsafeBufferPointer < UInt8 > , _ byteIndex: Int , _ stop: inout Bool ) -> Void
282
281
283
282
@_silgen_name ( " _swift_dispatch_data_empty " )
284
283
internal func _swift_dispatch_data_empty( ) -> dispatch_data_t
0 commit comments