Reset r.buffer on Reset to avoid subsequent Read calls
observing previously decoded data.
For #62513
Change-Id: Icb65e76b5c5c0af32b36ec3a5999dca86407cbc8
GitHub-Last-Rev:
99c0a6fa72ad67cba5d29593fd3b28d14ddce4a4
GitHub-Pull-Request: golang/go#63288
Reviewed-on: https://go-review.googlesource.com/c/go/+/531735
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Than McIntosh <thanm@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
r.frameSizeUnknown = false
r.remainingFrameSize = 0
r.blockOffset = 0
- // buffer
+ r.buffer = r.buffer[:0]
r.off = 0
// repeatedOffset1
// repeatedOffset2
}
}
+func TestReset(t *testing.T) {
+ input := strings.NewReader("")
+ r := NewReader(input)
+ for _, test := range tests {
+ test := test
+ t.Run(test.name, func(t *testing.T) {
+ input.Reset(test.compressed)
+ r.Reset(input)
+ got, err := io.ReadAll(r)
+ if err != nil {
+ t.Fatal(err)
+ }
+ gotstr := string(got)
+ if gotstr != test.uncompressed {
+ t.Errorf("got %q want %q", gotstr, test.uncompressed)
+ }
+ })
+ }
+}
+
var (
bigDataOnce sync.Once
bigDataBytes []byte