From 347418c3e7c1bc04b9a088d477025ea57daf05ae Mon Sep 17 00:00:00 2001 From: Abdellatif Anaflous <62770500+hktitof@users.noreply.github.com> Date: Thu, 10 Sep 2026 12:31:35 +0100 Subject: [PATCH] fix(drop): free CString allocations and GFile refs in drag uri handling (#700) Co-authored-by: hktitof --- server/pkg/drop/drop.c | 5 +++-- server/pkg/drop/drop.go | 6 +++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/server/pkg/drop/drop.c b/server/pkg/drop/drop.c index daae0d16..8564ec14 100644 --- a/server/pkg/drop/drop.c +++ b/server/pkg/drop/drop.c @@ -82,12 +82,13 @@ char **dragUrisMake(int size) { void dragUrisSetFile(char **uris, char *file, int n) { GFile *gfile = g_file_new_for_path(file); uris[n] = g_file_get_uri(gfile); + g_object_unref(gfile); } void dragUrisFree(char **uris, int size) { for (int i = 0; i < size; i++) { - free(uris[i]); + g_free(uris[i]); } - free(uris); + g_free(uris); } diff --git a/server/pkg/drop/drop.go b/server/pkg/drop/drop.go index 15ecbeb7..413e9bca 100644 --- a/server/pkg/drop/drop.go +++ b/server/pkg/drop/drop.go @@ -8,6 +8,8 @@ package drop import "C" import ( + "unsafe" + "sync" "github.com/kataras/go-events" @@ -29,7 +31,9 @@ func OpenWindow(files []string) { defer C.dragUrisFree(urisUnsafe, size) for i, file := range files { - C.dragUrisSetFile(urisUnsafe, C.CString(file), C.int(i)) + cFile := C.CString(file) + C.dragUrisSetFile(urisUnsafe, cFile, C.int(i)) + C.free(unsafe.Pointer(cFile)) } C.dragWindowOpen(urisUnsafe)