]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.3] compress/gzip: allow Reset on Reader without NewReader
authorDavid Symonds <dsymonds@golang.org>
Wed, 4 Jun 2014 01:21:08 +0000 (11:21 +1000)
committerDavid Symonds <dsymonds@golang.org>
Wed, 4 Jun 2014 01:21:08 +0000 (11:21 +1000)
««« CL 103020044 / 318b56ffe04b
compress/gzip: allow Reset on Reader without NewReader

Fixes #8126.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/103020044
»»»

TBR=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/105820043

src/pkg/compress/gzip/gunzip.go
src/pkg/compress/gzip/gunzip_test.go

index d18269cfd169f5d535dcf86e8cd81ebb3712bd1a..4f398b194a06b3fd96146696cf1d10c7849c96cf 100644 (file)
@@ -94,7 +94,11 @@ func NewReader(r io.Reader) (*Reader, error) {
 // This permits reusing a Reader rather than allocating a new one.
 func (z *Reader) Reset(r io.Reader) error {
        z.r = makeReader(r)
-       z.digest.Reset()
+       if z.digest == nil {
+               z.digest = crc32.NewIEEE()
+       } else {
+               z.digest.Reset()
+       }
        z.size = 0
        z.err = nil
        return z.readHeader(true)
index 1d5d8d9cc52c1e048c134c74d290e5cf8f53ba5a..2471038f53690476f06db1ce68c62e805e7a67d7 100644 (file)
@@ -353,3 +353,17 @@ func TestIssue6550(t *testing.T) {
                // ok
        }
 }
+
+func TestInitialReset(t *testing.T) {
+       var r Reader
+       if err := r.Reset(bytes.NewReader(gunzipTests[1].gzip)); err != nil {
+               t.Error(err)
+       }
+       var buf bytes.Buffer
+       if _, err := io.Copy(&buf, &r); err != nil {
+               t.Error(err)
+       }
+       if s := buf.String(); s != gunzipTests[1].raw {
+               t.Errorf("got %q want %q", s, gunzipTests[1].raw)
+       }
+}