diff --git a/buffer.go b/buffer.go index 4723a6a..afdb3ea 100644 --- a/buffer.go +++ b/buffer.go @@ -123,6 +123,9 @@ func (b *Buffer) Len() int { // buffer := NewBuffer(4) // if buffer.IsFreed() { ... } func (b *Buffer) IsFreed() bool { + if b == nil { + return true + } return b.freed.Load() } diff --git a/buffer_test.go b/buffer_test.go index df084cb..f45267b 100644 --- a/buffer_test.go +++ b/buffer_test.go @@ -71,6 +71,15 @@ func TestBufferUseAfterFreePanics(t *testing.T) { }) } +func TestBufferIsFreedIsNilSafe(t *testing.T) { + t.Parallel() + + var nilBuffer *Buffer + if !nilBuffer.IsFreed() { + t.Fatal("expected nil buffer to report freed") + } +} + func TestCStringRoundTrip(t *testing.T) { t.Parallel()