fix: inner error is nil

This commit is contained in:
崔竞宁
2022-12-13 18:02:22 +08:00
parent 913956ff10
commit 6351045e0f
2 changed files with 4 additions and 1 deletions

View File

@@ -80,7 +80,7 @@ func (*errValCoder) IsEmpty(ptr unsafe.Pointer) bool {
func (*errValCoder) Encode(ptr unsafe.Pointer, stream *jsoniter.Stream) {
val := (*error)(ptr)
if val == nil || *val == nil {
if val == nil || *val == nil || reflect2.IsNil(*val) {
stream.WriteNil()
return
}

View File

@@ -13,6 +13,9 @@ func TestErrorJSONMarshal(t *testing.T) {
m := map[string]error{}
m["test"] = syscall.EROFS
var innerNilErr *Error
m["test-nil"] = innerNilErr
var err error
logrus.Infof("get error type %s", spew.Sdump(reflect2.TypeOfPtr(&err).Elem()))