Revision: 28549
          http://sourceforge.net/p/bibdesk/svn/28549
Author:   hofman
Date:     2024-01-05 10:49:27 +0000 (Fri, 05 Jan 2024)
Log Message:
-----------
use objc methods or CFBridgingRelease for URLs

Modified Paths:
--------------
    trunk/bibdesk/BDSKLinkedFile.m

Modified: trunk/bibdesk/BDSKLinkedFile.m
===================================================================
--- trunk/bibdesk/BDSKLinkedFile.m      2024-01-05 10:23:18 UTC (rev 28548)
+++ trunk/bibdesk/BDSKLinkedFile.m      2024-01-05 10:49:27 UTC (rev 28549)
@@ -53,9 +53,9 @@
 #define BOOKMARK_KEY @"bookmark"
 #define RELATIVEPATH_KEY @"relativePath"
 
-static NSURL *BDSKCreateURLFromFSRef(const FSRef *inRef);
+static NSURL *BDSKURLFromFSRef(const FSRef *inRef);
 static BOOL BDSKPathToFSRef(NSString *inPath, FSRef *outRef);
-static NSData *BDSKCreateBookmarkDataFromURL(NSURL *aURL);
+static NSData *BDSKBookmarkDataFromURL(NSURL *aURL);
 static NSDictionary *BDSKDictionaryFromPlistData(NSData *data);
 static NSDictionary *BDSKDictionaryFromArchivedData(NSData *data);
 
@@ -667,7 +667,7 @@
     }
     
     if ((shouldUpdate || fileURL == nil) && fileRef != nil) {
-        NSURL *aURL = BDSKCreateURLFromFSRef(fileRef);
+        NSURL *aURL = BDSKURLFromFSRef(fileRef);
         if (aURL != nil) {
             if (fileURL == nil)
                 fileURL = [aURL retain];
@@ -675,7 +675,6 @@
                 [self updateAliasWithBaseRef:&baseRef];
                 [self setRelativePath:[aURL path] fromPath:basePath];
             }
-            [aURL release];
         }
     }
 }
@@ -685,7 +684,7 @@
     NSURL *aURL = nil;
     
     if (fileRef != nil) {
-        aURL = BDSKCreateURLFromFSRef(fileRef);
+        aURL = BDSKURLFromFSRef(fileRef);
         if (aURL == nil)
             // fileRef was invalid, try to update it
             BDSKFREEDESTROY(fileRef);
@@ -693,7 +692,7 @@
     if (aURL == nil) {
         // fileRef was nil or invalid
         [self updateFileRef];
-        aURL = BDSKCreateURLFromFSRef(fileRef);
+        aURL = BDSKURLFromFSRef(fileRef);
     }
     
     if ([aURL isEqual:fileURL] == NO && (aURL != nil || hadFileURL)) {
@@ -702,8 +701,7 @@
             // the file was replaced, reference the replacement rather than 
the moved file
             // this is what Dropbox does with file updates
             [self setFileRef:&aRef];
-            [aURL release];
-            aURL =BDSKCreateURLFromFSRef(fileRef);
+            aURL = BDSKURLFromFSRef(fileRef);
             NSString *basePath = [delegate basePathForLinkedFile:self];
             FSRef baseRef;
             if (BDSKPathToFSRef(basePath, &baseRef)) {
@@ -713,7 +711,6 @@
         }
         [self setFileURL:aURL];
     }
-    [aURL release];
 }
 
 - (void)setAliasWithPath:(NSString *)aPath basePath:(NSString *)basePath {
@@ -741,7 +738,7 @@
         // this does the updating if possible
         [self updateFileRef];
     } else {
-        NSURL *aURL = BDSKCreateURLFromFSRef(fileRef);
+        NSURL *aURL = BDSKURLFromFSRef(fileRef);
         if (aURL != nil) {
             // if the path has changed, updating will be done below
             if (basePath && (aPath == nil || [[aURL path] 
isEqualToString:aPath])) {
@@ -751,7 +748,6 @@
                     [self setRelativePath:[aURL path] fromPath:basePath];
                 }
             }
-            [aURL release];
         } else {
             // the fileRef was invalid, reset it and update
             BDSKFREEDESTROY(fileRef);
@@ -770,7 +766,7 @@
             BOOL needsUpdate = YES;
             FSRef aRef;
             if (BDSKPathToFSRef(aPath, &aRef)) {
-                NSURL *aURL = BDSKCreateURLFromFSRef(&aRef);
+                NSURL *aURL = BDSKURLFromFSRef(&aRef);
                 if ([path isEqualToString:[aURL path]]) {
                     needsUpdate = NO;
                 } else {
@@ -777,7 +773,6 @@
                     [self setFileRef:&aRef];
                     [self setFileURL:aURL];
                 }
-                [aURL release];
             }
             if (needsUpdate) {
                 FSRef baseRef;
@@ -841,9 +836,8 @@
     
     NSString *basePath = [aDelegate basePathForLinkedFile:self];
     NSString *relPath = basePath ? [aPath relativePathFromPath:basePath] : nil;
-    id anAlias = BDSKCreateBookmarkDataFromURL(aURL);
+    id anAlias = BDSKBookmarkDataFromURL(aURL);
     self = [self initWithAlias:anAlias relativePath:relPath 
delegate:aDelegate];
-    [anAlias release];
     if (self && basePath)
         [self updateFileURL];
     return self;
@@ -861,7 +855,7 @@
     NSURL *refURL = nil;
     
     if (fileURL) {
-        refURL = (NSURL *)CFURLCreateFileReferenceURL(kCFAllocatorDefault, 
(__bridge CFURLRef)fileURL, NULL);
+        refURL = [fileURL fileReferenceURL];
         
         if (refURL == nil) {
             // fileURL was invalid, try to update it
@@ -869,7 +863,7 @@
         } else if ([fileRefURL isEqual:refURL] == NO) {
             // file was replaced
             [fileRefURL release];
-            fileRefURL = refURL;
+            fileRefURL = [refURL retain];
             hasSkimNotesNeedsUpdate = YES;
             if (isInitial)
                 [delegate linkedFileURLChanged:self];
@@ -876,7 +870,7 @@
             basePath = [delegate basePathForLinkedFile:self];
             shouldUpdate = YES;
         } else {
-            BDSKDESTROY(refURL);
+            refURL = nil;
             if (relativePath == nil) {
                 basePath = [delegate basePathForLinkedFile:self];
                 shouldUpdate = YES;
@@ -887,7 +881,7 @@
     if (fileURL == nil) {
         
         if (fileRefURL) {
-            aURL = (NSURL *)CFURLCreateFilePathURL(kCFAllocatorDefault, 
(__bridge CFURLRef)fileRefURL, NULL);
+            aURL = [fileRefURL filePathURL];
             shouldUpdate = aURL != nil;
         }
         
@@ -895,22 +889,22 @@
         
         if (aURL == nil && basePath && relativePath) {
             aURL = [[NSURL alloc] initFileURLWithPath:[relativePath 
isAbsolutePath] ? relativePath : [basePath 
stringByAppendingPathComponent:relativePath] isDirectory:NO];
-            refURL = (NSURL *)CFURLCreateFileReferenceURL(kCFAllocatorDefault, 
(__bridge CFURLRef)aURL, NULL);
+            refURL = [aURL fileReferenceURL];
             shouldUpdate = refURL != nil;
         }
         
         if (refURL == nil && [alias isKindOfClass:[NSData class]]) {
-            aURL = [[NSURL alloc] initByResolvingBookmarkData:alias 
options:NSURLBookmarkResolutionWithoutUI | 
NSURLBookmarkResolutionWithoutMounting relativeToURL:nil 
bookmarkDataIsStale:&shouldUpdate error:NULL];
+            aURL = [[[NSURL alloc] initByResolvingBookmarkData:alias 
options:NSURLBookmarkResolutionWithoutUI | 
NSURLBookmarkResolutionWithoutMounting relativeToURL:nil 
bookmarkDataIsStale:&shouldUpdate error:NULL] autorelease];
             if (aURL)
-                refURL = (NSURL 
*)CFURLCreateFileReferenceURL(kCFAllocatorDefault, (__bridge CFURLRef)aURL, 
NULL);
+                refURL = [aURL fileReferenceURL];
             shouldUpdate = shouldUpdate && aURL != nil;
         } else if (aURL == nil && [alias isKindOfClass:[BDSKAlias class]]) {
             FSRef aRef, baseRef;
             BOOL ignored, hasBaseRef = BDSKPathToFSRef(basePath, &baseRef);
             if ([alias getFSRef:&aRef baseRef:hasBaseRef ? &baseRef : NULL 
shouldUpdate:&ignored]){
-                aURL = BDSKCreateURLFromFSRef(&aRef);
+                aURL = BDSKURLFromFSRef(&aRef);
                 if (aURL)
-                    refURL = (NSURL 
*)CFURLCreateFileReferenceURL(kCFAllocatorDefault, (__bridge CFURLRef)aURL, 
NULL);
+                    refURL = [aURL fileReferenceURL];
             }
             shouldUpdate = aURL != nil;
         }
@@ -919,9 +913,8 @@
             [self setFileURL:aURL];
             if (refURL) {
                 [fileRefURL release];
-                fileRefURL = refURL;
+                fileRefURL = [refURL retain];
             }
-            [aURL release];
         } else {
             BDSKDESTROY(fileRefURL);
         }
@@ -928,10 +921,10 @@
     }
     
     if (shouldUpdate) {
-        NSData *data = BDSKCreateBookmarkDataFromURL(fileURL ?: [fileRefURL 
filePathURL]);
+        NSData *data = BDSKBookmarkDataFromURL(fileURL ?: [fileRefURL 
filePathURL]);
         if (data) {
             [alias release];
-            alias = data;
+            alias = [data retain];
         }
         if (basePath)
             [self setRelativePath:[fileURL path] fromPath:basePath];
@@ -949,24 +942,23 @@
         if ([path isEqualToString:aPath] == NO) {
             // this can happen when auto filing to a different volume, which 
copies the file
             BOOL needsUpdate = YES;
-            CFURLRef refURL = CFURLCreateFileReferenceURL(kCFAllocatorDefault, 
(__bridge CFURLRef)[NSURL fileURLWithPath:aPath], NULL);
+            NSURL *refURL = [[NSURL fileURLWithPath:aPath] fileReferenceURL];
             if (refURL) {
-                NSURL *aURL = (NSURL 
*)CFURLCreateFilePathURL(kCFAllocatorDefault, refURL, NULL);
+                NSURL *aURL = [refURL filePathURL];
                 if ([path isEqualToString:[aURL path]]) {
-                    CFRelease(refURL);
+                    refURL = nil;
                     needsUpdate = NO;
                 } else {
                     [fileRefURL release];
-                    fileRefURL = (NSURL *)refURL;
+                    fileRefURL = [refURL retain];
                     [self setFileURL:aURL];
                 }
-                [aURL release];
             }
             if (needsUpdate) {
-                NSData *data = BDSKCreateBookmarkDataFromURL(fileURL ?: 
[fileRefURL filePathURL]);
+                NSData *data = BDSKBookmarkDataFromURL(fileURL ?: [fileRefURL 
filePathURL]);
                 if (data) {
                     [alias release];
-                    alias = data;
+                    alias = [data retain];
                 }
                 if (basePath)
                     [self setRelativePath:aPath fromPath:basePath];
@@ -1007,10 +999,10 @@
     NSData *data = nil;
     
     if (fileURL) {
-        data = BDSKCreateBookmarkDataFromURL(fileURL);
+        data = [BDSKBookmarkDataFromURL(fileURL) retain];
     } else if (relativePath && newBasePath) {
         NSURL *aURL = [NSURL fileURLWithPath:[relativePath isAbsolutePath] ? 
relativePath : [[newBasePath stringByAppendingPathComponent:relativePath] 
stringByStandardizingPath]];
-        data = BDSKCreateBookmarkDataFromURL(aURL);
+        data = [BDSKBookmarkDataFromURL(aURL) retain];
     }
     if (data == nil && [alias isKindOfClass:[NSData class]])
         data = [alias copy];
@@ -1101,8 +1093,8 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wdeprecated-declarations"
 
-static NSURL *BDSKCreateURLFromFSRef(const FSRef *inRef) {
-    return inRef == NULL ? NULL : (NSURL *)CFURLCreateFromFSRef(NULL, inRef);
+static NSURL *BDSKURLFromFSRef(const FSRef *inRef) {
+    return inRef == NULL ? NULL : CFBridgingRelease(CFURLCreateFromFSRef(NULL, 
inRef));
 }
 
 static const FSRef *BDSKBaseRefIfOnSameVolume(const FSRef *inBaseRef, const 
FSRef *inRef) {
@@ -1126,12 +1118,12 @@
 
 #pragma clang diagnostic pop
 
-static NSData *BDSKCreateBookmarkDataFromURL(NSURL *aURL) {
+static NSData *BDSKBookmarkDataFromURL(NSURL *aURL) {
     if (aURL == nil)
         return nil;
     // bookmark data before 10.12 was very large, hopefully that will be 
better when saving a minimal bookmark
     // for newer OS versions minimal bookmarks do not seem to be smaller, 
sometimnes even larger
-    return (NSData *)CFURLCreateBookmarkData(kCFAllocatorDefault, 
(CFURLRef)aURL, 0, NULL, NULL, NULL);
+    return CFBridgingRelease(CFURLCreateBookmarkData(kCFAllocatorDefault, 
(CFURLRef)aURL, 0, NULL, NULL, NULL));
 }
 
 static NSDictionary *BDSKDictionaryFromPlistData(NSData *data) {

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to