func()

in flexflate/deflate.go [422:461]


func (d *compressor) reset(w io.Writer) {
	d.w.reset(w)
	d.sync = false
	d.err = nil
	switch d.compressionLevel.chain {
	case 0:
		// level was NoCompression.
		for i := range d.window {
			d.window[i] = 0
		}
		d.windowEnd = 0
	default:
		d.chainHead = -1
		for s := d.hashHead; len(s) > 0; {
			n := copy(s, zeroes[:])
			s = s[n:]
		}
		for s := d.hashPrev; len(s) > 0; s = s[len(zeroes):] {
			copy(s, zeroes[:])
		}
		d.hashOffset = 1

		d.index, d.windowEnd = 0, 0
		for s := d.window; len(s) > 0; {
			n := copy(s, bzeroes[:])
			s = s[n:]
		}
		d.blockStart, d.byteAvailable = 0, false

		d.tokens = d.tokens[:maxFlateBlockTokens+1]
		for i := 0; i <= maxFlateBlockTokens; i++ {
			d.tokens[i] = 0
		}
		d.tokens = d.tokens[:0]
		d.length = minMatchLength - 1
		d.offset = 0
		d.hash = 0
		d.maxInsertIndex = 0
	}
}