summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2023-02-18 18:00:24 -0700
committerLuke Shumaker <lukeshu@lukeshu.com>2023-02-18 21:37:14 -0700
commit113aa7184e1d2f3858e68301dd1c2a6de51e6c1a (patch)
tree30971c6235c7f219d99430ddc1a893e46efa37af
parent595249c55c24828c04ab682dd3b35883b74aa790 (diff)
decode_scan: Go ahead and decrement sc.offset when unreading
-rw-r--r--decode_scan.go8
1 files changed, 3 insertions, 5 deletions
diff --git a/decode_scan.go b/decode_scan.go
index 507bc42..85f3190 100644
--- a/decode_scan.go
+++ b/decode_scan.go
@@ -40,6 +40,7 @@ func (sc *runeTypeScanner) ReadRuneType() (rune, int, jsonparse.RuneType, error)
case sc.initialized && (sc.rType == jsonparse.RuneTypeError || sc.rType == jsonparse.RuneTypeEOF):
// do nothing
case sc.repeat:
+ sc.offset += int64(sc.rSize)
_, _, _ = sc.inner.ReadRune()
default:
sc.initialized = true
@@ -93,16 +94,13 @@ func (sc *runeTypeScanner) UnreadRune() error {
return ErrInvalidUnreadRune
}
sc.repeat = true
+ sc.offset -= int64(sc.rSize)
_ = sc.inner.UnreadRune()
return nil
}
func (sc *runeTypeScanner) InputOffset() int64 {
- ret := sc.offset
- if sc.repeat {
- ret -= int64(sc.rSize)
- }
- return ret
+ return sc.offset
}
func (sc *runeTypeScanner) PushReadBarrier() {