@@ -1113,27 +1113,29 @@ extension Unicode.Scalar.Properties {
1113
1113
internal func _scalarName(
1114
1114
_ choice: __swift_stdlib_UCharNameChoice
1115
1115
) -> String ? {
1116
- var err = __swift_stdlib_U_ZERO_ERROR
1117
- let count = Int ( __swift_stdlib_u_charName ( icuValue, choice, nil , 0 , & err ) )
1116
+ var error = __swift_stdlib_U_ZERO_ERROR
1117
+ let count = Int ( __swift_stdlib_u_charName ( icuValue, choice, nil , 0 , & error ) )
1118
1118
guard count > 0 else { return nil }
1119
1119
1120
1120
// ICU writes a trailing null, so we have to save room for it as well.
1121
- var array = Array < UInt8 > ( repeating : 0 , count: count + 1 )
1122
- return array . withUnsafeMutableBufferPointer { bufPtr in
1123
- var err = __swift_stdlib_U_ZERO_ERROR
1121
+ let array = Array < UInt8 > ( unsafeUninitializedCapacity : count + 1 ) {
1122
+ buffer , initializedCount in
1123
+ var error = __swift_stdlib_U_ZERO_ERROR
1124
1124
let correctSize = __swift_stdlib_u_charName (
1125
1125
icuValue,
1126
1126
choice,
1127
- UnsafeMutableRawPointer ( bufPtr . baseAddress. _unsafelyUnwrappedUnchecked)
1127
+ UnsafeMutableRawPointer ( buffer . baseAddress. _unsafelyUnwrappedUnchecked)
1128
1128
. assumingMemoryBound ( to: Int8 . self) ,
1129
- Int32 ( bufPtr . count) ,
1130
- & err )
1131
- guard err . isSuccess else {
1129
+ Int32 ( buffer . count) ,
1130
+ & error )
1131
+ guard error . isSuccess else {
1132
1132
fatalError ( " Unexpected error case-converting Unicode scalar. " )
1133
1133
}
1134
1134
_internalInvariant ( count == correctSize, " inconsistent ICU behavior " )
1135
- return String . _fromASCII (
1136
- UnsafeBufferPointer ( rebasing: bufPtr [ ..< count] ) )
1135
+ initializedCount = count + 1
1136
+ }
1137
+ return array. withUnsafeBufferPointer { buffer in
1138
+ String . _fromASCII ( UnsafeBufferPointer ( rebasing: buffer [ ..< count] ) )
1137
1139
}
1138
1140
}
1139
1141
0 commit comments