]> Cypherpunks repositories - gostls13.git/commitdiff
Fixed a small bug with compress/flate/Inflater. It incorrectly checked
authorIvan Krasin <krasin@golang.org>
Mon, 27 Jul 2009 21:33:21 +0000 (14:33 -0700)
committerIvan Krasin <krasin@golang.org>
Mon, 27 Jul 2009 21:33:21 +0000 (14:33 -0700)
the size of chunk with uncompressed data (00 is terms of DEFLATE).

APPROVED=rsc
DELTA=15  (14 added, 0 deleted, 1 changed)
OCL=32105
CL=32238

src/pkg/compress/flate/flate_test.go
src/pkg/compress/flate/inflate.go

index 309606ecbc6496a900762106a1fc1425c894fa3f..bfa56271541a857d7759368f6a0f6aa396205f6d 100644 (file)
@@ -9,6 +9,7 @@
 package flate
 
 import (
+       "bytes";
        "bufio";
        "compress/flate";
        "io";
@@ -129,3 +130,16 @@ func TestInitDecoder(t *testing.T) {
                }
        }
 }
+
+func TestUncompressedSource(t *testing.T) {
+       decoder := NewInflater(bytes.NewBuffer(
+               []byte{ 0x01, 0x01, 0x00, 0xfe, 0xff, 0x11 }));
+       output := make([]byte, 1);
+       n, error := decoder.Read(output);
+       if n != 1 || error != nil {
+               t.Fatalf("decoder.Read() = %d, %v, want 1, nil", n, error);
+       }
+       if output[0] != 0x11 {
+               t.Errorf("output[0] = %x, want 0x11", output[0]);
+       }
+}
index 31289c80ae0107f023f6626048a5fb5ef7d8ae1f..95973b4c7331e1585117fdb820bc6f275ed170a7 100644 (file)
@@ -542,7 +542,7 @@ func (f *inflater) dataBlock() os.Error {
        }
        n := int(f.buf[0]) | int(f.buf[1])<<8;
        nn := int(f.buf[2]) | int(f.buf[3])<<8;
-       if nn != ^n {
+       if uint16(nn) != uint16(^n) {
                return CorruptInputError(f.roffset);
        }