From 6acc25264d8baccf8246c6d53b708098560dee5c Mon Sep 17 00:00:00 2001 From: XXIV <13811862+thechampagne@users.noreply.github.com> Date: Mon, 25 Sep 2023 04:50:38 +0300 Subject: [PATCH 1/5] fix memory leak --- certificates/install_darwin.go | 4 +++- systray/exec_darwin.go | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/certificates/install_darwin.go b/certificates/install_darwin.go index 765257b91..dfa20fab3 100644 --- a/certificates/install_darwin.go +++ b/certificates/install_darwin.go @@ -76,7 +76,9 @@ import ( // if something goes wrong will show a dialog with the error and return an error func InstallCertificate(cert *paths.Path) error { log.Infof("Installing certificate: %s", cert) - p := C.installCert(C.CString(cert.String())) + ccert := C.CString(cert.String()) + defer C.free(unsafe.Pointer(ccert)) + p := C.installCert(ccert) s := C.GoString(p) if len(s) != 0 { oscmd := exec.Command("osascript", "-e", "display dialog \""+s+"\" buttons \"OK\" with title \"Error installing certificates\"") diff --git a/systray/exec_darwin.go b/systray/exec_darwin.go index ba66e0c39..273f6822c 100644 --- a/systray/exec_darwin.go +++ b/systray/exec_darwin.go @@ -67,7 +67,9 @@ func execApp(path string, args ...string) error { C.setCharArray(argv, C.int(i), C.CString(arg)) } - C.runApplication(C.CString(path), argv, argc) + cpath := C.CString(path) + defer C.free(unsafe.Pointer(cpath)) + C.runApplication(cpath, argv, argc) C.freeCharArray(argv, argc) return nil From 56500caf7a980e0c682f979f67edfd5f96bc8ee7 Mon Sep 17 00:00:00 2001 From: XXIV <13811862+thechampagne@users.noreply.github.com> Date: Mon, 25 Sep 2023 04:52:53 +0300 Subject: [PATCH 2/5] Update install_darwin.go --- certificates/install_darwin.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/certificates/install_darwin.go b/certificates/install_darwin.go index dfa20fab3..ac2b7a191 100644 --- a/certificates/install_darwin.go +++ b/certificates/install_darwin.go @@ -76,8 +76,8 @@ import ( // if something goes wrong will show a dialog with the error and return an error func InstallCertificate(cert *paths.Path) error { log.Infof("Installing certificate: %s", cert) - ccert := C.CString(cert.String()) - defer C.free(unsafe.Pointer(ccert)) + ccert := C.CString(cert.String()) + defer C.free(unsafe.Pointer(ccert)) p := C.installCert(ccert) s := C.GoString(p) if len(s) != 0 { From e50a0a550da05afc26bd692cd8699ffa9c5873ae Mon Sep 17 00:00:00 2001 From: XXIV <13811862+thechampagne@users.noreply.github.com> Date: Mon, 25 Sep 2023 13:16:19 +0300 Subject: [PATCH 3/5] fix undefined symbol --- certificates/install_darwin.go | 1 + 1 file changed, 1 insertion(+) diff --git a/certificates/install_darwin.go b/certificates/install_darwin.go index ac2b7a191..80802a07a 100644 --- a/certificates/install_darwin.go +++ b/certificates/install_darwin.go @@ -64,6 +64,7 @@ const char *installCert(const char *path) { */ import "C" import ( + "unsafe" "errors" "os/exec" From 754b2bac1fa5fc51951ac546a34a836435f03aab Mon Sep 17 00:00:00 2001 From: XXIV <13811862+thechampagne@users.noreply.github.com> Date: Mon, 25 Sep 2023 13:24:03 +0300 Subject: [PATCH 4/5] fix undefined symbol --- systray/exec_darwin.go | 1 + 1 file changed, 1 insertion(+) diff --git a/systray/exec_darwin.go b/systray/exec_darwin.go index 273f6822c..fe836b358 100644 --- a/systray/exec_darwin.go +++ b/systray/exec_darwin.go @@ -46,6 +46,7 @@ void runApplication(const char *path, const char **argv, int argc) { */ import "C" import ( + "unsafe" "os/exec" "path/filepath" From f19f3366fe9c01732a368ca4176dea2e1732debe Mon Sep 17 00:00:00 2001 From: XXIV <13811862+thechampagne@users.noreply.github.com> Date: Wed, 4 Oct 2023 16:11:44 +0300 Subject: [PATCH 5/5] go fmt --- certificates/install_darwin.go | 6 +++--- systray/exec_darwin.go | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/certificates/install_darwin.go b/certificates/install_darwin.go index 80802a07a..134a4bc0c 100644 --- a/certificates/install_darwin.go +++ b/certificates/install_darwin.go @@ -64,9 +64,9 @@ const char *installCert(const char *path) { */ import "C" import ( - "unsafe" "errors" "os/exec" + "unsafe" log "github.com/sirupsen/logrus" @@ -77,8 +77,8 @@ import ( // if something goes wrong will show a dialog with the error and return an error func InstallCertificate(cert *paths.Path) error { log.Infof("Installing certificate: %s", cert) - ccert := C.CString(cert.String()) - defer C.free(unsafe.Pointer(ccert)) + ccert := C.CString(cert.String()) + defer C.free(unsafe.Pointer(ccert)) p := C.installCert(ccert) s := C.GoString(p) if len(s) != 0 { diff --git a/systray/exec_darwin.go b/systray/exec_darwin.go index fe836b358..912a736e3 100644 --- a/systray/exec_darwin.go +++ b/systray/exec_darwin.go @@ -46,9 +46,9 @@ void runApplication(const char *path, const char **argv, int argc) { */ import "C" import ( - "unsafe" "os/exec" "path/filepath" + "unsafe" "github.com/sirupsen/logrus" )