@@ -1448,7 +1448,7 @@ final class JsonWriter private[jsoniter_scala](
14481448 }
14491449
14501450 private [this ] def writeEscapedOrEncodedString (s : String , from : Int , pos : Int , escapedChars : Array [Byte ]): Int =
1451- if (config.escapeUnicode) writeEscapedString(s, from, s.length, pos, limit - 13 , escapedChars)
1451+ if (config.escapeUnicode) writeEscapedString(s, from, s.length, pos, limit - 13 , escapedChars, lowerCaseHexDigits )
14521452 else writeEncodedString(s, from, s.length, pos, limit - 7 , escapedChars)
14531453
14541454 @ tailrec
@@ -1466,7 +1466,7 @@ final class JsonWriter private[jsoniter_scala](
14661466 buf(pos) = '\\ '
14671467 buf(pos + 1 ) = esc
14681468 writeEncodedString(s, from + 1 , to, pos + 2 , posLim, escapedChars)
1469- } else writeEncodedString(s, from + 1 , to, writeEscapedUnicode(ch1.toByte, pos, buf), posLim, escapedChars)
1469+ } else writeEncodedString(s, from + 1 , to, writeEscapedUnicode(ch1.toByte, pos, buf, lowerCaseHexDigits ), posLim, escapedChars)
14701470 } else if (ch1 < 0x800 ) { // 00000bbbbbaaaaaa (UTF-16 char) -> 110bbbbb 10aaaaaa (UTF-8 bytes)
14711471 buf(pos) = (ch1 >> 6 | 0xC0 ).toByte
14721472 buf(pos + 1 ) = (ch1 & 0x3F | 0x80 ).toByte
@@ -1492,30 +1492,30 @@ final class JsonWriter private[jsoniter_scala](
14921492 }
14931493
14941494 @ tailrec
1495- private [this ] def writeEscapedString (s : String , from : Int , to : Int , pos : Int , posLim : Int , escapedChars : Array [Byte ]): Int =
1495+ private [this ] def writeEscapedString (s : String , from : Int , to : Int , pos : Int , posLim : Int , escapedChars : Array [Byte ], ds : Array [ Short ] ): Int =
14961496 if (from >= to) pos
1497- else if (pos >= posLim) writeEscapedString(s, from, to, flushAndGrowBuf(13 , pos), limit - 12 , escapedChars)
1497+ else if (pos >= posLim) writeEscapedString(s, from, to, flushAndGrowBuf(13 , pos), limit - 12 , escapedChars, ds )
14981498 else {
14991499 val ch1 = s.charAt(from).toInt
15001500 if (ch1 < 0x80 ) {
15011501 val esc = escapedChars(ch1)
15021502 if (esc == 0 ) {
15031503 buf(pos) = ch1.toByte
1504- writeEscapedString(s, from + 1 , to, pos + 1 , posLim, escapedChars)
1504+ writeEscapedString(s, from + 1 , to, pos + 1 , posLim, escapedChars, ds )
15051505 } else if (esc > 0 ) {
15061506 buf(pos) = '\\ '
15071507 buf(pos + 1 ) = esc
1508- writeEscapedString(s, from + 1 , to, pos + 2 , posLim, escapedChars)
1509- } else writeEscapedString(s, from + 1 , to, writeEscapedUnicode(ch1.toByte, pos, buf), posLim, escapedChars)
1508+ writeEscapedString(s, from + 1 , to, pos + 2 , posLim, escapedChars, ds )
1509+ } else writeEscapedString(s, from + 1 , to, writeEscapedUnicode(ch1.toByte, pos, buf, ds ), posLim, escapedChars, ds )
15101510 } else if ((ch1 & 0xF800 ) != 0xD800 ) {
1511- writeEscapedString(s, from + 1 , to, writeEscapedUnicode(ch1, pos, buf), posLim, escapedChars)
1511+ writeEscapedString(s, from + 1 , to, writeEscapedUnicode(ch1, pos, buf, ds ), posLim, escapedChars, ds )
15121512 } else {
15131513 var ch2 = 0
15141514 if (ch1 >= 0xDC00 || from + 1 >= to || {
15151515 ch2 = s.charAt(from + 1 ).toInt
15161516 (ch2 & 0xFC00 ) != 0xDC00
15171517 }) illegalSurrogateError()
1518- writeEscapedString(s, from + 2 , to, writeEscapedUnicode(ch2, writeEscapedUnicode(ch1, pos, buf), buf), posLim, escapedChars)
1518+ writeEscapedString(s, from + 2 , to, writeEscapedUnicode(ch2, writeEscapedUnicode(ch1, pos, buf, ds ), buf, ds ), posLim, escapedChars, ds )
15191519 }
15201520 }
15211521
@@ -1533,10 +1533,10 @@ final class JsonWriter private[jsoniter_scala](
15331533 buf(pos) = '\\ '
15341534 buf(pos + 1 ) = esc
15351535 pos += 2
1536- } else pos = writeEscapedUnicode(ch.toByte, pos, buf)
1536+ } else pos = writeEscapedUnicode(ch.toByte, pos, buf, lowerCaseHexDigits )
15371537 } else if (config.escapeUnicode) {
15381538 if ((ch & 0xF800 ) == 0xD800 ) illegalSurrogateError()
1539- pos = writeEscapedUnicode(ch, pos, buf)
1539+ pos = writeEscapedUnicode(ch, pos, buf, lowerCaseHexDigits )
15401540 } else if (ch < 0x800 ) { // 00000bbbbbaaaaaa (UTF-16 char) -> 110bbbbb 10aaaaaa (UTF-8 bytes)
15411541 buf(pos) = (ch >> 6 | 0xC0 ).toByte
15421542 buf(pos + 1 ) = (ch & 0x3F | 0x80 ).toByte
@@ -1551,8 +1551,7 @@ final class JsonWriter private[jsoniter_scala](
15511551 count = pos + 1
15521552 }
15531553
1554- private [this ] def writeEscapedUnicode (ch : Int , pos : Int , buf : Array [Byte ]): Int = {
1555- val ds = lowerCaseHexDigits
1554+ private [this ] def writeEscapedUnicode (ch : Int , pos : Int , buf : Array [Byte ], ds : Array [Short ]): Int = {
15561555 buf(pos) = '\\ '
15571556 buf(pos + 1 ) = 'u'
15581557 val d1 = ds(ch >> 8 )
@@ -1564,8 +1563,7 @@ final class JsonWriter private[jsoniter_scala](
15641563 pos + 6
15651564 }
15661565
1567- private [this ] def writeEscapedUnicode (b : Byte , pos : Int , buf : Array [Byte ]): Int = {
1568- val ds = lowerCaseHexDigits
1566+ private [this ] def writeEscapedUnicode (b : Byte , pos : Int , buf : Array [Byte ], ds : Array [Short ]): Int = {
15691567 buf(pos) = '\\ '
15701568 buf(pos + 1 ) = 'u'
15711569 buf(pos + 2 ) = '0'
0 commit comments