diff --git a/buffer.go b/buffer.go index eadfde0..88bafa6 100644 --- a/buffer.go +++ b/buffer.go @@ -71,6 +71,7 @@ func (b *Buffer) Free() { panic("cgo.Buffer.Free: double-free detected") } + runtime.SetFinalizer(b, nil) C.free(b.pointer) b.pointer = nil b.data = nil diff --git a/scope.go b/scope.go index 147deb9..2a9bbc9 100644 --- a/scope.go +++ b/scope.go @@ -81,6 +81,7 @@ func (s *Scope) FreeAll() { if !s.freed.CompareAndSwap(false, true) { panic("cgo.Scope.FreeAll: double-free detected") } + runtime.SetFinalizer(s, nil) s.lock.Lock() buffers := s.buffers