summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2023-02-15 23:45:07 -0700
committerLuke Shumaker <lukeshu@lukeshu.com>2023-02-16 22:56:05 -0700
commit0d23080e1f2af81d8d4656c3b72791b26f52f361 (patch)
tree8f0247b646291577f54f7d164b7fed675388c72c
parent30e0ee4ced0be18b4df91674fd6f073793b61fe9 (diff)
reencode: utf8.RuneLen is showing up in the profile
-rw-r--r--reencode.go12
1 files changed, 6 insertions, 6 deletions
diff --git a/reencode.go b/reencode.go
index f18888c..d8cdb71 100644
--- a/reencode.go
+++ b/reencode.go
@@ -165,14 +165,14 @@ func (enc *ReEncoder) Write(p []byte) (int, error) {
c, size := utf8.DecodeRune(enc.buf[:])
n += size - enc.bufLen
enc.bufLen = 0
- enc.handleRune(c)
+ enc.handleRune(c, size)
if enc.err != nil {
return 0, enc.err
}
}
for utf8.FullRune(p[n:]) {
c, size := utf8.DecodeRune(p[n:])
- enc.handleRune(c)
+ enc.handleRune(c, size)
if enc.err != nil {
return n, enc.err
}
@@ -194,14 +194,14 @@ func (enc *ReEncoder) WriteString(p string) (int, error) {
c, size := utf8.DecodeRune(enc.buf[:])
n += size - enc.bufLen
enc.bufLen = 0
- enc.handleRune(c)
+ enc.handleRune(c, size)
if enc.err != nil {
return 0, enc.err
}
}
for utf8.FullRuneInString(p[n:]) {
c, size := utf8.DecodeRuneInString(p[n:])
- enc.handleRune(c)
+ enc.handleRune(c, size)
if enc.err != nil {
return n, enc.err
}
@@ -253,7 +253,7 @@ func (enc *ReEncoder) Close() error {
return nil
}
-func (enc *ReEncoder) handleRune(c rune) {
+func (enc *ReEncoder) handleRune(c rune, size int) {
rehandle:
t, err := enc.par.HandleRune(c)
if err != nil {
@@ -283,7 +283,7 @@ rehandle:
}
}
- enc.inputPos += int64(utf8.RuneLen(c))
+ enc.inputPos += int64(size)
}
// semi-public API /////////////////////////////////////////////////////////////