diff --git a/editor/editor_darwin.go b/editor/editor_darwin.go index f6a7066..9d20af7 100644 --- a/editor/editor_darwin.go +++ b/editor/editor_darwin.go @@ -7,10 +7,12 @@ package editor #include */ import "C" +import "unsafe" //export GetOpeningFilepath func GetOpeningFilepath(str *C.char) { goStr := C.GoString(str) + C.free(unsafe.Pointer(str)) editor.openingFileCh <- goStr } diff --git a/generate_objcbridge.go b/generate_objcbridge.go index 2110cef..ee4e459 100644 --- a/generate_objcbridge.go +++ b/generate_objcbridge.go @@ -14,8 +14,6 @@ const objcbridgeH = `void SetMyApplicationDelegate();` const objcbridgeM = `#import -char *cFilename; - // Forward declaration of the Go function to be called from C extern void GetOpeningFilepath(char* str); @@ -29,9 +27,9 @@ extern void GetOpeningFilepath(char* str); } - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename { - char *utf8String = [filename UTF8String]; - cFilename = strdup(utf8String); - GetOpeningFilepath(cFilename); + const char *utf8String = [filename UTF8String]; + char *cStr = strdup(utf8String); + GetOpeningFilepath(cStr); return YES; } @@ -53,6 +51,17 @@ func main() { } func generateFile(filename, content string) { + if _, err := os.Stat(filename); err == nil { + err = os.Remove(filename) + if err != nil { + fmt.Println("Error removing existing file:", err) + return + } + } else if !os.IsNotExist(err) { + fmt.Println("Error checking file existence:", err) + return + } + file, err := os.Create(filename) if err != nil { fmt.Println("Error creating file:", err)