diff --git a/Sources/NIO/ByteBuffer-core.swift b/Sources/NIO/ByteBuffer-core.swift index 2eec4fb48b..474128db94 100644 --- a/Sources/NIO/ByteBuffer-core.swift +++ b/Sources/NIO/ByteBuffer-core.swift @@ -29,13 +29,22 @@ let sysFree: @convention(c) (UnsafeMutableRawPointer?) -> Void = free internal func initializeMemory(as type: T.Type, repeating repeatedValue: T) -> UnsafeMutableBufferPointer { let ptr = self.bindMemory(to: T.self) - ptr.initialize(from: repeatElement(repeatedValue, count: self.count / MemoryLayout.stride)) + _ = ptr.initialize(from: repeatElement(repeatedValue, count: self.count / MemoryLayout.stride)) return ptr } public func copyMemory(from src: UnsafeRawBufferPointer) { self.copyBytes(from: src) } + + internal func bindMemory(to type: T.Type) -> UnsafeMutableBufferPointer { + guard let base = self.baseAddress else { + return UnsafeMutableBufferPointer(start: nil, count: 0) + } + let capacity = count / MemoryLayout.stride + let ptr = base.bindMemory(to: T.self, capacity: capacity) + return UnsafeMutableBufferPointer(start: ptr, count: capacity) + } } #endif