diff --git a/go.sum b/go.sum index d7444cc7..d04e8195 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,4 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= @@ -36,7 +35,6 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= diff --git a/odata/odata.go b/odata/odata.go index 9cd15b62..07152cc2 100644 --- a/odata/odata.go +++ b/odata/odata.go @@ -83,18 +83,17 @@ func (e *Error) UnmarshalJSON(data []byte) error { *e = Error(e2) // Unmarshal the message, which can be a plain string or an object wrapping a message - if e.RawMessage != nil { - raw := *e.RawMessage - switch string(raw[0]) { + if raw := e.RawMessage; raw != nil && len(*raw) > 0 { + switch string((*raw)[0]) { case "\"": var s string - if err := json.Unmarshal(raw, &s); err != nil { + if err := json.Unmarshal(*raw, &s); err != nil { return err } e.Message = &s case "{": var m map[string]interface{} - if err := json.Unmarshal(raw, &m); err != nil { + if err := json.Unmarshal(*raw, &m); err != nil { return err } if v, ok := m["value"]; ok { @@ -103,7 +102,7 @@ func (e *Error) UnmarshalJSON(data []byte) error { } } default: - return fmt.Errorf("unrecognised error message: %#v", string(raw)) + return fmt.Errorf("unrecognised error message: %#v", string(*raw)) } } return nil