From a5c0e5c78bfa15cdbe30a156faac7351ff6343f4 Mon Sep 17 00:00:00 2001 From: Contributor Date: Wed, 14 Oct 2026 07:06:20 +0000 Subject: [PATCH] fix(json): return underlying writer error from Encoder.Encode --- json/json.go | 2 +- json/json_test.go | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/json/json.go b/json/json.go index 028fd1f3..e4e3a52a 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 8256be2a..76714b76 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()) + } +}