diff --git a/pkg/gst/gst_promise.go b/pkg/gst/gst_promise.go index 730a478..1910859 100644 --- a/pkg/gst/gst_promise.go +++ b/pkg/gst/gst_promise.go @@ -271,6 +271,9 @@ func (promise *Promise) GetReply() *Structure { if cret != nil { goret = UnsafeStructureFromGlibNone(unsafe.Pointer(cret)) + + // the returned Structure is borrowed, so keep the promise alive: + runtime.AddCleanup(goret, func(_ *Promise) {}, promise) } return goret