]> git.lyx.org Git - lyx.git/commitdiff
Avoid the use of a static NSAutoreleasePool.
authorStephan Witt <switt@lyx.org>
Fri, 9 Oct 2015 06:16:10 +0000 (08:16 +0200)
committerStephan Witt <switt@lyx.org>
Fri, 9 Oct 2015 06:16:24 +0000 (08:16 +0200)
This seems to cause crashes on exit from time to time.

src/support/linkback/LinkBackProxy.m

index 0f6b71d6646bafc7c31baf352f4472fb6b5d3aa4..e676c686f9a2e8ac557d756cd88058b199e25669 100644 (file)
@@ -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;
-       }
 }