diff --git a/report.go b/report.go index c02c080..b373fcb 100644 --- a/report.go +++ b/report.go @@ -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 } diff --git a/report_test.go b/report_test.go index 9512d40..1f3157f 100644 --- a/report_test.go +++ b/report_test.go @@ -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()))