aboutsummaryrefslogtreecommitdiff
path: root/src/encoding/json/v2/arshal_methods.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/encoding/json/v2/arshal_methods.go')
-rw-r--r--src/encoding/json/v2/arshal_methods.go4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/encoding/json/v2/arshal_methods.go b/src/encoding/json/v2/arshal_methods.go
index 2decd144db..1621eadc08 100644
--- a/src/encoding/json/v2/arshal_methods.go
+++ b/src/encoding/json/v2/arshal_methods.go
@@ -9,6 +9,7 @@ package json
import (
"encoding"
"errors"
+ "io"
"reflect"
"encoding/json/internal"
@@ -302,6 +303,9 @@ func makeMethodArshaler(fncs *arshaler, t reflect.Type) *arshaler {
}
xd := export.Decoder(dec)
prevDepth, prevLength := xd.Tokens.DepthLength()
+ if prevDepth == 1 && xd.AtEOF() {
+ return io.EOF // check EOF early to avoid fn reporting an EOF
+ }
xd.Flags.Set(jsonflags.WithinArshalCall | 1)
unmarshaler, _ := reflect.TypeAssert[UnmarshalerFrom](va.Addr())
err := unmarshaler.UnmarshalJSONFrom(dec)