diff --git a/stdlib/public/core/UnsafeBufferPointer.swift.gyb b/stdlib/public/core/UnsafeBufferPointer.swift.gyb index a0242df85313b..ee85c9de54d33 100644 --- a/stdlib/public/core/UnsafeBufferPointer.swift.gyb +++ b/stdlib/public/core/UnsafeBufferPointer.swift.gyb @@ -499,7 +499,8 @@ extension Unsafe${Mutable}BufferPointer { @inlinable // unsafe-performance public init(rebasing slice: Slice>) { let base = slice.base.baseAddress?.advanced(by: slice.startIndex) - self.init(start: base, count: slice.count) + let count = slice.endIndex &- slice.startIndex + self.init(start: base, count: count) } % end @@ -526,7 +527,8 @@ extension Unsafe${Mutable}BufferPointer { @inlinable // unsafe-performance public init(rebasing slice: Slice>) { let base = slice.base.baseAddress?.advanced(by: slice.startIndex) - self.init(start: base, count: slice.count) + let count = slice.endIndex &- slice.startIndex + self.init(start: base, count: count) } /// Deallocates the memory block previously allocated at this buffer pointer’s diff --git a/stdlib/public/core/UnsafeRawBufferPointer.swift.gyb b/stdlib/public/core/UnsafeRawBufferPointer.swift.gyb index 453791f2c60d3..1a7508ccf50a3 100644 --- a/stdlib/public/core/UnsafeRawBufferPointer.swift.gyb +++ b/stdlib/public/core/UnsafeRawBufferPointer.swift.gyb @@ -512,7 +512,8 @@ extension Unsafe${Mutable}RawBufferPointer { @inlinable public init(rebasing slice: Slice) { let base = slice.base.baseAddress?.advanced(by: slice.startIndex) - self.init(start: base, count: slice.count) + let count = slice.endIndex &- slice.startIndex + self.init(start: base, count: count) } % end # !mutable @@ -539,7 +540,8 @@ extension Unsafe${Mutable}RawBufferPointer { @inlinable public init(rebasing slice: Slice) { let base = slice.base.baseAddress?.advanced(by: slice.startIndex) - self.init(start: base, count: slice.count) + let count = slice.endIndex &- slice.startIndex + self.init(start: base, count: count) } /// A pointer to the first byte of the buffer.