Commit 9db1dd07 authored by Tim Cooper's avatar Tim Cooper Committed by Brad Fitzpatrick

encoding/hex: fix Dumper not always closing on Close call

Updates #23574

Change-Id: I1b87390679e0817a2f6e4e5938994ea32df87bd7
Reviewed-on: https://go-review.googlesource.com/107596Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent f83e4212
......@@ -282,10 +282,13 @@ func (h *dumper) Write(data []byte) (n int, err error) {
func (h *dumper) Close() (err error) {
// See the comments in Write() for the details of this format.
if h.used == 0 || h.closed {
if h.closed {
return
}
h.closed = true
if h.used == 0 {
return
}
h.buf[0] = ' '
h.buf[1] = ' '
h.buf[2] = ' '
......
......@@ -204,6 +204,19 @@ func TestDumper_doubleclose(t *testing.T) {
}
}
func TestDumper_earlyclose(t *testing.T) {
var out bytes.Buffer
dumper := Dumper(&out)
dumper.Close()
dumper.Write([]byte(`gopher`))
expected := ""
if out.String() != expected {
t.Fatalf("got:\n%#v\nwant:\n%#v", out.String(), expected)
}
}
func TestDump(t *testing.T) {
var in [40]byte
for i := range in {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment