From 27bded22ee5f4fc83a96648ca72c8471402ebe61 Mon Sep 17 00:00:00 2001 From: Sergey Fedorov Date: Wed, 30 Apr 2025 02:42:50 +0800 Subject: [PATCH] Fix NSAutoreleaseNoPool errors --- src/cb/src/platforms/macos.mm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git src/cb/src/platforms/macos.mm src/cb/src/platforms/macos.mm index dfa322c..76a1cee 100644 --- src/cb/src/platforms/macos.mm +++ src/cb/src/platforms/macos.mm @@ -15,15 +15,25 @@ along with this program. If not, see .*/ #import +#import #import #import #import #import #import "../clipboard.hpp" +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1090 +#define POOLSTART NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; +#define POOLEND [pool release]; +#else +#define POOLSTART +#define POOLEND +#endif + const bool GUIClipboardSupportsCut = false; static std::vector fileContents() { + POOLSTART NSArray *classes = [NSArray arrayWithObjects:[NSURL class], nil]; if ([[NSPasteboard generalPasteboard] canReadObjectForClasses:classes options:nil]) { NSArray *files = [[NSPasteboard generalPasteboard] readObjectsForClasses:classes options:nil]; @@ -36,15 +46,18 @@ static std::vector fileContents() { return stringArray; } + POOLEND return {}; } static std::string textContent() { + POOLSTART NSArray *classes = [NSArray arrayWithObjects:[NSString class], [NSAttributedString class], nil]; if ([[NSPasteboard generalPasteboard] canReadObjectForClasses:classes options:nil]) { NSString *text = [[NSPasteboard generalPasteboard] stringForType:NSPasteboardTypeString]; return [text UTF8String]; } + POOLEND return ""; } @@ -65,6 +78,7 @@ ClipboardContent getGUIClipboard(const std::string& requested_mime) { } void writeToGUIClipboard(const ClipboardContent& clipboard) { + POOLSTART [[NSPasteboard generalPasteboard] clearContents]; if (clipboard.type() == ClipboardContentType::Text || clipboard.type() == ClipboardContentType::Binary) { NSString *clipboardText = [NSString stringWithUTF8String:clipboard.text().c_str()]; @@ -80,6 +94,7 @@ void writeToGUIClipboard(const ClipboardContent& clipboard) { // Write blank content [[NSPasteboard generalPasteboard] setString:@"" forType:NSPasteboardTypeString]; } + POOLEND } bool playAsyncSoundEffect(const std::valarray& samples) {