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)