]> Cypherpunks repositories - gostls13.git/commitdiff
strings: rely on utf8.AppendRune
authorJoe Tsai <joetsai@digital-static.net>
Thu, 16 Jun 2022 00:50:04 +0000 (17:50 -0700)
committerGopher Robot <gobot@golang.org>
Tue, 23 Aug 2022 20:24:43 +0000 (20:24 +0000)
This is both simpler and more performant.

Change-Id: I66ef8e49c059a722932392ee3ecfb951d9b8e121
Reviewed-on: https://go-review.googlesource.com/c/go/+/412339
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
Run-TryBot: Joseph Tsai <joetsai@digital-static.net>
Auto-Submit: Joseph Tsai <joetsai@digital-static.net>
Reviewed-by: Ian Lance Taylor <iant@google.com>
src/strings/builder.go

index 3caddabd4ec95c2ddc5815474c21f3824b2e8929..096e9c765e26e7c039ff0ae7e4be006ba346a6e1 100644 (file)
@@ -103,18 +103,9 @@ func (b *Builder) WriteByte(c byte) error {
 // It returns the length of r and a nil error.
 func (b *Builder) WriteRune(r rune) (int, error) {
        b.copyCheck()
-       // Compare as uint32 to correctly handle negative runes.
-       if uint32(r) < utf8.RuneSelf {
-               b.buf = append(b.buf, byte(r))
-               return 1, nil
-       }
-       l := len(b.buf)
-       if cap(b.buf)-l < utf8.UTFMax {
-               b.grow(utf8.UTFMax)
-       }
-       n := utf8.EncodeRune(b.buf[l:l+utf8.UTFMax], r)
-       b.buf = b.buf[:l+n]
-       return n, nil
+       n := len(b.buf)
+       b.buf = utf8.AppendRune(b.buf, r)
+       return len(b.buf) - n, nil
 }
 
 // WriteString appends the contents of s to b's buffer.