commit 989c72530e789abf234cca5e6084e585cc073bb6
Author: Stephan Witt <[email protected]>
Date: Fri Oct 9 08:16:10 2015 +0200
Avoid the use of a static NSAutoreleasePool.
This seems to cause crashes on exit from time to time.
diff --git a/src/support/linkback/LinkBackProxy.m
b/src/support/linkback/LinkBackProxy.m
index 0f6b71d..e676c68 100644
--- a/src/support/linkback/LinkBackProxy.m
+++ b/src/support/linkback/LinkBackProxy.m
@@ -16,8 +16,6 @@
///////////////////////////////////////////////////////////////////////
-static NSAutoreleasePool * pool = nil;
-
@interface LyXLinkBackClient : NSObject <LinkBackClientDelegate> {
NSMutableSet * keys;
}
@@ -173,42 +171,32 @@ static NSAutoreleasePool * pool = nil;
static LyXLinkBackClient * linkBackClient = nil;
-void checkAutoReleasePool()
-{
- if (pool == nil)
- pool = [[NSAutoreleasePool alloc] init];
-}
-
int isLinkBackDataInPasteboard()
{
- checkAutoReleasePool() ;
- {
- NSArray * linkBackType = [NSArray arrayWithObjects:
LinkBackPboardType, nil];
- NSString * ret = [[NSPasteboard generalPasteboard]
availableTypeFromArray:linkBackType];
- return ret != nil;
- }
+ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
+ NSArray * linkBackType = [NSArray arrayWithObjects: LinkBackPboardType,
nil];
+ NSString * ret = [[NSPasteboard generalPasteboard]
availableTypeFromArray:linkBackType];
+ [pool release];
+ return ret != nil;
}
void getLinkBackData(void const * * buf, unsigned * len)
{
- checkAutoReleasePool() ;
- {
- // get linkback data from pasteboard
- NSPasteboard * pboard = [NSPasteboard generalPasteboard];
- id linkBackData = [pboard
propertyListForType:LinkBackPboardType];
+ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
+ // get linkback data from pasteboard
+ NSPasteboard * pboard = [NSPasteboard generalPasteboard];
+ id linkBackData = [pboard propertyListForType:LinkBackPboardType];
- NSData * nsdata
- = [NSArchiver archivedDataWithRootObject:linkBackData];
- if (nsdata == nil) {
- *buf = 0;
- *len = 0;
- return;
- }
-
+ NSData * nsdata = [NSArchiver archivedDataWithRootObject:linkBackData];
+ if (nsdata == nil) {
+ *buf = 0;
+ *len = 0;
+ } else {
*buf = [nsdata bytes];
*len = [nsdata length];
}
+ [pool release];
}
@@ -217,11 +205,12 @@ int editLinkBackFile(char const * docName)
// setup Obj-C and our client
if (linkBackClient == nil)
linkBackClient = [[LyXLinkBackClient alloc] init];
- checkAutoReleasePool() ;
-
+ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
// FIXME: really UTF8 here?
NSString * nsDocName = [NSString stringWithUTF8String:docName];
- return [linkBackClient edit:nsDocName] == YES;
+ int result = [linkBackClient edit:nsDocName] == YES;
+ [pool release];
+ return result;
}
@@ -231,10 +220,5 @@ void closeAllLinkBackLinks()
[linkBackClient release];
linkBackClient = nil;
}
-
- if (pool != nil) {
- [pool drain];
- pool = nil;
- }
}