From c1533bd5f89a996f21f12758893146a5f3461d0e Mon Sep 17 00:00:00 2001 From: Spike^ekipS Date: Mon, 2 Aug 2021 00:24:18 +0900 Subject: [PATCH] patched; panic Event.Object() and Event.EmbedObject() with nil (#338) --- event.go | 9 +++++++++ event_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/event.go b/event.go index 6f8341cb..5a6d2a3e 100644 --- a/event.go +++ b/event.go @@ -207,6 +207,12 @@ func (e *Event) Object(key string, obj LogObjectMarshaler) *Event { return e } e.buf = enc.AppendKey(e.buf, key) + if obj == nil { + e.buf = enc.AppendNil(e.buf) + + return e + } + e.appendObject(obj) return e } @@ -224,6 +230,9 @@ func (e *Event) EmbedObject(obj LogObjectMarshaler) *Event { if e == nil { return e } + if obj == nil { + return e + } obj.MarshalZerologObject(e) return e } diff --git a/event_test.go b/event_test.go index 879eca19..98041b34 100644 --- a/event_test.go +++ b/event_test.go @@ -37,3 +37,29 @@ func TestEvent_AnErr(t *testing.T) { }) } } + +func TestEvent_ObjectWithNil(t *testing.T) { + var buf bytes.Buffer + e := newEvent(levelWriterAdapter{&buf}, DebugLevel) + _ = e.Object("obj", nil) + _ = e.write() + + want := `{"obj":null}` + got := strings.TrimSpace(buf.String()) + if got != want { + t.Errorf("Event.Object() = %q, want %q", got, want) + } +} + +func TestEvent_EmbedObjectWithNil(t *testing.T) { + var buf bytes.Buffer + e := newEvent(levelWriterAdapter{&buf}, DebugLevel) + _ = e.EmbedObject(nil) + _ = e.write() + + want := "{}" + got := strings.TrimSpace(buf.String()) + if got != want { + t.Errorf("Event.EmbedObject() = %q, want %q", got, want) + } +}