Skip to content

Commit 0ce100d

Browse files
vmihailencodsnet
authored andcommitted
compress/flate: don't ignore dict in Reader.Reset
Fixes #16162. Change-Id: I6f4ae906630079ef5fc29ee5f70e2e3d1c962170 Reviewed-on: https://go-review.googlesource.com/24390 Reviewed-by: Joe Tsai <[email protected]> TryBot-Result: Gobot Gobot <[email protected]>
1 parent db58021 commit 0ce100d

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

src/compress/flate/inflate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -766,7 +766,7 @@ func (f *decompressor) Reset(r io.Reader, dict []byte) error {
766766
dict: f.dict,
767767
step: (*decompressor).nextBlock,
768768
}
769-
f.dict.init(maxMatchOffset, nil)
769+
f.dict.init(maxMatchOffset, dict)
770770
return nil
771771
}
772772

src/compress/flate/inflate_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,33 @@ func TestReset(t *testing.T) {
3737
}
3838
}
3939
}
40+
41+
func TestResetDict(t *testing.T) {
42+
dict := []byte("the lorem fox")
43+
ss := []string{
44+
"lorem ipsum izzle fo rizzle",
45+
"the quick brown fox jumped over",
46+
}
47+
48+
deflated := make([]bytes.Buffer, len(ss))
49+
for i, s := range ss {
50+
w, _ := NewWriterDict(&deflated[i], DefaultCompression, dict)
51+
w.Write([]byte(s))
52+
w.Close()
53+
}
54+
55+
inflated := make([]bytes.Buffer, len(ss))
56+
57+
f := NewReader(nil)
58+
for i := range inflated {
59+
f.(Resetter).Reset(&deflated[i], dict)
60+
io.Copy(&inflated[i], f)
61+
}
62+
f.Close()
63+
64+
for i, s := range ss {
65+
if s != inflated[i].String() {
66+
t.Errorf("inflated[%d]:\ngot %q\nwant %q", i, inflated[i], s)
67+
}
68+
}
69+
}

0 commit comments

Comments
 (0)