From 483f3dc39fb187dadd28a0d06a92084a207715b3 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Tue, 29 Nov 2022 19:37:10 +0000 Subject: [PATCH] Revert "encoding/xml: disallow empty namespace when prefix is set" This reverts CL 105636. Reason for revert: Fails with existing XML data. At this stage in the release cycle we should revert, and try again next time with some way to support existing XML. For #8068 Change-Id: Ia84cbf3a84878ac7190f72998545dee22c36c45e Reviewed-on: https://go-review.googlesource.com/c/go/+/453996 Auto-Submit: Ian Lance Taylor TryBot-Result: Gopher Robot Reviewed-by: Heschi Kreinick Reviewed-by: Emmanuel Odeke Reviewed-by: Ian Lance Taylor Run-TryBot: Ian Lance Taylor --- src/encoding/xml/xml.go | 4 ---- src/encoding/xml/xml_test.go | 29 ----------------------------- 2 files changed, 33 deletions(-) diff --git a/src/encoding/xml/xml.go b/src/encoding/xml/xml.go index 9df556a136..1f3084e5ca 100644 --- a/src/encoding/xml/xml.go +++ b/src/encoding/xml/xml.go @@ -302,10 +302,6 @@ func (d *Decoder) Token() (Token, error) { // the translations first. for _, a := range t1.Attr { if a.Name.Space == xmlnsPrefix { - if a.Value == "" { - d.err = d.syntaxError("empty namespace with prefix") - return nil, d.err - } v, ok := d.ns[a.Name.Local] d.pushNs(a.Name.Local, v, ok) d.ns[a.Name.Local] = a.Value diff --git a/src/encoding/xml/xml_test.go b/src/encoding/xml/xml_test.go index df25812521..30fb94da6d 100644 --- a/src/encoding/xml/xml_test.go +++ b/src/encoding/xml/xml_test.go @@ -916,35 +916,6 @@ func TestIssue5880(t *testing.T) { } } -func TestIssue8068(t *testing.T) { - emptyError := SyntaxError{} - noError := emptyError.Error() - testCases := []struct { - s string - wantErr SyntaxError - }{ - {``, SyntaxError{}}, - {``, SyntaxError{Msg: "empty namespace with prefix", Line: 1}}, - {``, SyntaxError{}}, - {``, SyntaxError{Msg: "attribute name without = in element", Line: 1}}, - {``, SyntaxError{Msg: "attribute name without = in element", Line: 1}}, - } - var dest string - for _, tc := range testCases { - if got, want := Unmarshal([]byte(tc.s), &dest), tc.wantErr.Error(); got == nil { - if want != noError { - t.Errorf("%q: got nil, want %s", tc.s, want) - } - } else { - if want == "" { - t.Errorf("%q: got %s, want nil", tc.s, got) - } else if got.Error() != want { - t.Errorf("%q: got %s, want %s", tc.s, got, want) - } - } - } -} - func TestIssue8535(t *testing.T) { type ExampleConflict struct { -- 2.48.1