Skip to content

Commit 38590d6

Browse files
committed
Uses assign(from:, count:) instead of loop for copying bytes
1 parent 55e3e82 commit 38590d6

File tree

1 file changed

+4
-7
lines changed

1 file changed

+4
-7
lines changed

Sources/Foundation/NSStringAPI.swift

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,10 @@ internal func _persistCString(_ p: UnsafePointer<CChar>?) -> [CChar]? {
7373
guard let cString = p else {
7474
return nil
7575
}
76-
let len = UTF8._nullCodeUnitOffset(in: cString)
77-
let result = [CChar](unsafeUninitializedCapacity: len + 1) { buf, initedCount in
78-
for i in 0..<len {
79-
buf[i] = cString[i]
80-
}
81-
buf[len] = 0
82-
initedCount = len + 1
76+
let bytesToCopy = UTF8._nullCodeUnitOffset(in: cString) + 1 // +1 for the terminating NUL
77+
let result = [CChar](unsafeUninitializedCapacity: bytesToCopy) { buf, initedCount in
78+
buf.baseAddress!.assign(from: cString, count: bytesToCopy)
79+
initedCount = bytesToCopy
8380
}
8481
return result
8582
}

0 commit comments

Comments
 (0)