Skip to content

Why the *flate.Writer.Close can not release the reference of passin io.Writer? #219

@bronze1man

Description

@bronze1man

If the *flate.Writer.Close release the reference of passin io.Writer, I can simple my code and improve performance a little.
I have tried it, but the test case is failed with

--- FAIL: TestWriterReset (0.09s)
    deflate_test.go:566: got 11274 bytes
    deflate_test.go:566: got 84 bytes
    deflate_test.go:566: got 56 bytes
    deflate_test.go:566: got 4248 bytes
    deflate_test.go:566: got 11274 bytes
    deflate_test.go:566: got 84 bytes
    deflate_test.go:552: got 56, expected 49 bytes
    deflate_test.go:558: mismatch index 2: 31, expected b1
    deflate_test.go:558: mismatch index 5: 20, expected 00
    deflate_test.go:558: mismatch index 6: 00, expected 08
    deflate_test.go:558: mismatch index 7: 04, expected 03
    deflate_test.go:558: mismatch index 8: c0, expected b0
    deflate_test.go:558: mismatch index 9: 2a, expected 6b
    deflate_test.go:562: Stopping

my change code:

func (d *compressor) close() error {
	if d.err != nil {
		return d.err
	}
	d.sync = true
	d.step(d)
	if d.err != nil {
		d.w.writer = nil
		return d.err
	}
	if d.w.writeStoredHeader(0, true); d.w.err != nil {
		d.w.writer = nil
		return d.w.err
	}
	d.w.flush()
	d.w.writer = nil
	return d.w.err
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions