diff --git a/json/json.go b/json/json.go index 028fd1f..e4e3a52 100644 --- a/json/json.go +++ b/json/json.go @@ -538,7 +538,7 @@ func (enc *Encoder) Encode(v any) error { } encoderBufferPool.Put(buf) - return err + return enc.err } // SetEscapeHTML is documented at https://golang.org/pkg/encoding/json/#Encoder.SetEscapeHTML diff --git a/json/json_test.go b/json/json_test.go index 8256be2..76714b7 100644 --- a/json/json_test.go +++ b/json/json_test.go @@ -1993,3 +1993,19 @@ func TestKind(t *testing.T) { } } } + +type errWriter struct{} + +func (ew *errWriter) Write([]byte) (n int, err error) { + return 0, errors.New("test-error") +} + +func TestWriterErr(t *testing.T) { + enc := NewEncoder(&errWriter{}) + err := enc.Encode("") + if err == nil { + t.Error("expected error not returned") + } else if err.Error() != "test-error" { + t.Errorf("unexpected error returned: want=test-error got=%s", err.Error()) + } +}