@@ -242,4 +242,14 @@ func TestValueStringBuilder(t *testing.T) {
t.Fatal(res)
}
})
+
+ t.Run("concatSubstringUnicodeASCII", func(t *testing.T) {
+ t.Parallel()
+ var sb valueStringBuilder
+ sb.WriteString(newStringValue("юникод"))
+ sb.WriteSubstring(asciiString(" ascii"), 0, 6)
+ if res := sb.String(); !res.SameAs(newStringValue("юникод ascii")) {
+ t.Fatal(res)
+ }
+ })
@@ -252,8 +252,10 @@ func (b *valueStringBuilder) WriteSubstring(source valueString, start int, end i
if ascii, ok := source.(asciiString); ok {
if b.ascii() {
b.asciiBuilder.WriteString(string(ascii[start:end]))
- return
+ } else {
+ b.unicodeBuilder.writeASCIIString(string(ascii[start:end]))
+ return
us := source.(unicodeString)