Skip to content

Commit 69dd655

Browse files
committed
Simplify rangeOf
1 parent 5709e1a commit 69dd655

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

Sources/CompletionScoring/Utilities/SwiftExtensions.swift

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -429,13 +429,17 @@ extension UnsafeBufferPointer {
429429

430430
extension UnsafeBufferPointer<UInt8> {
431431
package func rangeOf(bytes needle: UnsafeBufferPointer<UInt8>, startOffset: Int = 0) -> Range<Int>? {
432-
baseAddress.flatMap { baseAddress in
433-
let match = memmem(baseAddress + startOffset, count - startOffset, needle.baseAddress, needle.count)
434-
return match.map { match in
435-
let start = baseAddress.distance(to: match.assumingMemoryBound(to: UInt8.self))
436-
return start ..+ needle.count
437-
}
432+
guard count > 0, let baseAddress else {
433+
return nil
434+
}
435+
guard needle.count > 0, let needleBaseAddress = needle.baseAddress else {
436+
return nil
437+
}
438+
guard let match = memmem(baseAddress + startOffset, count - startOffset, needleBaseAddress, needle.count) else {
439+
return nil
438440
}
441+
let start = baseAddress.distance(to: match.assumingMemoryBound(to: UInt8.self))
442+
return start ..+ needle.count
439443
}
440444

441445
func rangeOf(bytes needle: [UInt8]) -> Range<Int>? {

0 commit comments

Comments
 (0)