@@ -1680,7 +1680,7 @@ private Token ScanFlowScalar(bool isSingleQuoted)
1680
1680
1681
1681
if ( codeLength > 0 )
1682
1682
{
1683
- uint character = 0 ;
1683
+ int character = 0 ;
1684
1684
1685
1685
// Scan the character value.
1686
1686
@@ -1690,7 +1690,7 @@ private Token ScanFlowScalar(bool isSingleQuoted)
1690
1690
{
1691
1691
throw new SyntaxErrorException ( start , cursor . Mark ( ) , "While parsing a quoted scalar, did not find expected hexdecimal number." ) ;
1692
1692
}
1693
- character = ( uint ) ( ( character << 4 ) + analyzer . AsHex ( k ) ) ;
1693
+ character = ( ( character << 4 ) + analyzer . AsHex ( k ) ) ;
1694
1694
}
1695
1695
1696
1696
// Check the value and write the character.
@@ -1700,7 +1700,7 @@ private Token ScanFlowScalar(bool isSingleQuoted)
1700
1700
throw new SyntaxErrorException ( start , cursor . Mark ( ) , "While parsing a quoted scalar, find invalid Unicode character escape code." ) ;
1701
1701
}
1702
1702
1703
- value . Append ( ( char ) character ) ;
1703
+ value . Append ( char . ConvertFromUtf32 ( character ) ) ;
1704
1704
1705
1705
// Advance the pointer.
1706
1706
@@ -2170,7 +2170,7 @@ private string ScanTagUri(string head, Mark start)
2170
2170
/// Decode an URI-escape sequence corresponding to a single UTF-8 character.
2171
2171
/// </summary>
2172
2172
2173
- private char ScanUriEscapes ( Mark start )
2173
+ private string ScanUriEscapes ( Mark start )
2174
2174
{
2175
2175
// Decode the required number of characters.
2176
2176
@@ -2223,14 +2223,14 @@ private char ScanUriEscapes(Mark start)
2223
2223
}
2224
2224
while ( -- width > 0 ) ;
2225
2225
2226
- var characters = Encoding . UTF8 . GetChars ( charBytes . ToArray ( ) ) ;
2226
+ var result = Encoding . UTF8 . GetString ( charBytes . ToArray ( ) ) ;
2227
2227
2228
- if ( characters . Length != 1 )
2228
+ if ( result . Length == 0 || result . Length > 2 )
2229
2229
{
2230
2230
throw new SyntaxErrorException ( start , cursor . Mark ( ) , "While parsing a tag, find an incorrect UTF-8 sequence." ) ;
2231
2231
}
2232
2232
2233
- return characters [ 0 ] ;
2233
+ return result ;
2234
2234
}
2235
2235
2236
2236
/// <summary>
0 commit comments