From 2ae8e7ee757074e8c59d0c8b6d8fc64b1e7c1e01 Mon Sep 17 00:00:00 2001 From: "rafael@allread.ai" Date: Wed, 6 Nov 2024 17:28:55 +0100 Subject: [PATCH] unreference cstring created when calling gst_tag_list_to_string which caused a memory leak --- gst/gst_tag_list.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gst/gst_tag_list.go b/gst/gst_tag_list.go index a2652de..f7c3220 100644 --- a/gst/gst_tag_list.go +++ b/gst/gst_tag_list.go @@ -70,7 +70,11 @@ func NewTagListFromString(tags string) *TagList { func (t *TagList) Instance() *C.GstTagList { return C.toGstTagList(unsafe.Pointer(t.ptr)) } // String implements a stringer on the TagList and serializes it to a string. -func (t *TagList) String() string { return C.GoString(C.gst_tag_list_to_string(t.Instance())) } +func (t *TagList) String() string { + cStr := C.gst_tag_list_to_string(t.Instance()) + defer C.g_free((C.gpointer)(unsafe.Pointer(cStr))) + return C.GoString(cStr) +} // Ref increases the ref count on this TagList by one. func (t *TagList) Ref() *TagList { return wrapTagList(C.gst_tag_list_ref(t.Instance())) }