Skip to content

Commit ebe8aac

Browse files
authored
Merge pull request #30132 from valeriyvan/RemoveRedundantZeroingStringGraphemeBreaking
Removes redundant buffer zeroing in StringGraphemeBreaking.swift by using `init(unsafeUninitializedCapacity:initializingWith:)
2 parents cab9c49 + 78fb0f7 commit ebe8aac

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

stdlib/public/core/StringGraphemeBreaking.swift

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -225,13 +225,12 @@ extension _StringGuts {
225225

226226
// TODO(String performance): Local small stack first, before making large
227227
// array. Also, make a smaller initial array and grow over time.
228-
var codeUnits = Array<UInt16>(repeating: 0, count: count)
229-
230-
codeUnits.withUnsafeMutableBufferPointer {
231-
_cocoaStringCopyCharacters(
232-
from: cocoa,
233-
range: 0..<count,
234-
into: $0.baseAddress._unsafelyUnwrappedUnchecked)
228+
let codeUnits = Array<UInt16>(unsafeUninitializedCapacity: count) { buf, initializedCount in
229+
_cocoaStringCopyCharacters(
230+
from: cocoa,
231+
range: 0..<count,
232+
into: buf.baseAddress._unsafelyUnwrappedUnchecked)
233+
initializedCount = count
235234
}
236235
return codeUnits.withUnsafeBufferPointer {
237236
_measureCharacterStrideICU(of: $0, startingAt: i)
@@ -291,13 +290,12 @@ extension _StringGuts {
291290

292291
// TODO(String performance): Local small stack first, before making large
293292
// array. Also, make a smaller initial array and grow over time.
294-
var codeUnits = Array<UInt16>(repeating: 0, count: count)
295-
296-
codeUnits.withUnsafeMutableBufferPointer {
297-
_cocoaStringCopyCharacters(
298-
from: cocoa,
299-
range: 0..<count,
300-
into: $0.baseAddress._unsafelyUnwrappedUnchecked)
293+
let codeUnits = Array<UInt16>(unsafeUninitializedCapacity: count) { buf, initializedCount in
294+
_cocoaStringCopyCharacters(
295+
from: cocoa,
296+
range: 0..<count,
297+
into: buf.baseAddress._unsafelyUnwrappedUnchecked)
298+
initializedCount = count
301299
}
302300
return codeUnits.withUnsafeBufferPointer {
303301
_measureCharacterStrideICU(of: $0, endingAt: i)

0 commit comments

Comments
 (0)