// For matches this long, we don't bother inserting each individual
// item into the table.
d.index += d.length
- d.hash = (int(d.window[d.index])<<hashShift + int(d.window[d.index+1]))
+ if d.index < d.maxInsertIndex {
+ d.hash = (int(d.window[d.index])<<hashShift + int(d.window[d.index+1]))
+ }
}
if d.ti == maxFlateBlockTokens {
// The block includes the current character
t.Fatalf("writer wrote %q want %q", b1.Bytes(), b.Bytes())
}
}
+
+// See http://code.google.com/p/go/issues/detail?id=2508
+func TestRegression2508(t *testing.T) {
+ w := NewWriter(ioutil.Discard, 1)
+ buf := make([]byte, 1024)
+ for i := 0; i < 131072; i++ {
+ if _, err := w.Write(buf); err != nil {
+ t.Fatalf("writer failed: %v", err)
+ }
+ }
+ w.Close()
+}