From be08ddbfcd855fd13cf80497921ae53d2b64a7b1 Mon Sep 17 00:00:00 2001 From: Sam Whited Date: Fri, 13 Oct 2017 22:28:57 -0500 Subject: encoding/xml: don't panic when custom Unmarshaler sees StartElement Change-Id: I90aa0a983abd0080f3de75d3340fdb15c1f9ca35 Reviewed-on: https://go-review.googlesource.com/70891 Reviewed-by: Ian Lance Taylor Run-TryBot: Sam Whited TryBot-Result: Gobot Gobot --- src/encoding/xml/xml_test.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/encoding/xml/xml_test.go') diff --git a/src/encoding/xml/xml_test.go b/src/encoding/xml/xml_test.go index 2437f19d9d..7a3511d583 100644 --- a/src/encoding/xml/xml_test.go +++ b/src/encoding/xml/xml_test.go @@ -861,3 +861,26 @@ func TestWrapDecoder(t *testing.T) { t.Fatalf("Got unexpected chardata: `%s`\n", o.Chardata) } } + +type tokReader struct{} + +func (tokReader) Token() (Token, error) { + return StartElement{}, nil +} + +type Failure struct{} + +func (Failure) UnmarshalXML(*Decoder, StartElement) error { + return nil +} + +func TestTokenUnmarshaler(t *testing.T) { + defer func() { + if r := recover(); r != nil { + t.Error("Unexpected panic using custom token unmarshaler") + } + }() + + d := NewTokenDecoder(tokReader{}) + d.Decode(&Failure{}) +} -- cgit v1.3