@@ -115,20 +115,23 @@ extension Unicode.Scalar {
115
115
var utf16 = _utf16CodeUnits
116
116
var scratchBuffer = _Normalization. _SegmentOutputBuffer ( allZeros: ( ) )
117
117
let count = scratchBuffer. withUnsafeMutableBufferPointer { bufPtr -> Int in
118
- return withUnsafePointer ( to: & utf16. 0 ) { utf16Pointer in
119
- var err = __swift_stdlib_U_ZERO_ERROR
120
- let correctSize = u_strTo (
121
- bufPtr. baseAddress. _unsafelyUnwrappedUnchecked,
122
- Int32 ( bufPtr. count) ,
123
- utf16Pointer,
124
- Int32 ( utf16Length) ,
125
- " " ,
126
- & err)
127
- guard err. isSuccess ||
128
- err == __swift_stdlib_U_BUFFER_OVERFLOW_ERROR else {
129
- fatalError ( " Unexpected error case-converting Unicode scalar. " )
118
+ return withUnsafePointer ( to: & utf16) { tuplePtr in
119
+ return tuplePtr. withMemoryRebound ( to: UInt16 . self, capacity: 2 ) {
120
+ utf16Pointer in
121
+ var err = __swift_stdlib_U_ZERO_ERROR
122
+ let correctSize = u_strTo (
123
+ bufPtr. baseAddress. _unsafelyUnwrappedUnchecked,
124
+ Int32 ( bufPtr. count) ,
125
+ utf16Pointer,
126
+ Int32 ( utf16Length) ,
127
+ " " ,
128
+ & err)
129
+ guard err. isSuccess ||
130
+ err == __swift_stdlib_U_BUFFER_OVERFLOW_ERROR else {
131
+ fatalError ( " Unexpected error case-converting Unicode scalar. " )
132
+ }
133
+ return Int ( correctSize)
130
134
}
131
- return Int ( correctSize)
132
135
}
133
136
}
134
137
if _fastPath ( count <= scratchBuffer. count) {
@@ -137,19 +140,22 @@ extension Unicode.Scalar {
137
140
}
138
141
var array = Array < UInt16 > ( repeating: 0 , count: count)
139
142
array. withUnsafeMutableBufferPointer { bufPtr in
140
- withUnsafePointer ( to: & utf16. 0 ) { utf16Pointer in
141
- var err = __swift_stdlib_U_ZERO_ERROR
142
- let correctSize = u_strTo (
143
- bufPtr. baseAddress. _unsafelyUnwrappedUnchecked,
144
- Int32 ( bufPtr. count) ,
145
- utf16Pointer,
146
- Int32 ( utf16Length) ,
147
- " " ,
148
- & err)
149
- guard err. isSuccess else {
150
- fatalError ( " Unexpected error case-converting Unicode scalar. " )
143
+ withUnsafePointer ( to: & utf16) { tuplePtr in
144
+ tuplePtr. withMemoryRebound ( to: UInt16 . self, capacity: 2 ) {
145
+ utf16Pointer in
146
+ var err = __swift_stdlib_U_ZERO_ERROR
147
+ let correctSize = u_strTo (
148
+ bufPtr. baseAddress. _unsafelyUnwrappedUnchecked,
149
+ Int32 ( bufPtr. count) ,
150
+ utf16Pointer,
151
+ Int32 ( utf16Length) ,
152
+ " " ,
153
+ & err)
154
+ guard err. isSuccess else {
155
+ fatalError ( " Unexpected error case-converting Unicode scalar. " )
156
+ }
157
+ _sanityCheck ( count == correctSize, " inconsistent ICU behavior " )
151
158
}
152
- _sanityCheck ( count == correctSize, " inconsistent ICU behavior " )
153
159
}
154
160
}
155
161
return String . _fromWellFormedUTF16CodeUnits ( array [ ..< count] )
@@ -796,11 +802,14 @@ extension Unicode.Scalar.Properties {
796
802
/// [Unicode Standard](http://www.unicode.org/versions/latest/).
797
803
public var age : Unicode . Version ? {
798
804
var versionInfo : __swift_stdlib_UVersionInfo = ( 0 , 0 , 0 , 0 )
799
- withUnsafeMutablePointer ( to: & versionInfo. 0 ) { versionInfoPointer in
800
- __swift_stdlib_u_charAge ( _value, versionInfoPointer)
805
+ withUnsafeMutablePointer ( to: & versionInfo) { tuplePtr in
806
+ tuplePtr. withMemoryRebound ( to: UInt8 . self, capacity: 4 ) {
807
+ versionInfoPtr in
808
+ __swift_stdlib_u_charAge ( _value, versionInfoPtr)
809
+ }
801
810
}
802
811
guard versionInfo. 0 != 0 else { return nil }
803
- return ( major: Int ( versionInfo. 0 ) , Int ( versionInfo. 1 ) )
812
+ return ( major: Int ( versionInfo. 0 ) , minor : Int ( versionInfo. 1 ) )
804
813
}
805
814
}
806
815
0 commit comments