Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions OpenCloud File Provider/FileProviderExtension.m
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ - (instancetype)init

- (OCVFSCore *)vfsCore
{
if (self.bookmark == nil) { return nil; } // domain's bookmark may be gone (account removed in main app); avoid creating a VFS over nil and crashing in OCVault rootURLForUUID:

if (_vfsCore == nil)
{
_vfsCore = [VFSManager.sharedManager vfsForBookmark:self.bookmark];
Expand Down Expand Up @@ -278,6 +280,8 @@ - (NSFileProviderItemIdentifier)persistentIdentifierForItemAtURL:(NSURL *)url

// OCLogDebug(@"-persistentIdentifierForItemAtURL: %@", (pathComponents[pathComponents.count - 2]));

if (self.bookmark == nil) { return nil; } // can be invoked by FileProvider after the domain's account was removed; returning nil tells the system "unknown" instead of crashing the extension

if ([url.lastPathComponent isEqual:self.bookmark.fpServicesURLComponentName])
{
return (url.lastPathComponent);
Expand Down
4 changes: 4 additions & 0 deletions OpenCloudAppFramework/VFS/VFSManager.m
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@ - (OCVFSCore *)_vfsForBookmarkUUID:(OCBookmarkUUID)bookmarkUUID setup:(void(^)(O

- (OCVFSCore *)vfsForBookmark:(OCBookmark *)bookmark
{
if (bookmark.uuid == nil) { return nil; } // bookmark for removed/missing account can be nil or partial; passing nil UUID downstream would crash OCVault rootURLForUUID:

return ([self _vfsForBookmarkUUID:bookmark.uuid setup:^(OCVFSCore *vfsCore) {
// Initially populate drive list
[self populateVFS:vfsCore forBookmark:bookmark];
Expand All @@ -90,6 +92,8 @@ - (OCVFSCore *)vfsForBookmark:(OCBookmark *)bookmark

- (OCVFSCore *)vfsForVault:(OCVault *)vault
{
if (vault.bookmark.uuid == nil) { return nil; } // same defensive guard as -vfsForBookmark:; OCVault should never have nil uuid post-fix, but cheap to verify here too

return ([self _vfsForBookmarkUUID:vault.bookmark.uuid setup:^(OCVFSCore *vfsCore) {
// Initially populate drive list
[self updateVFS:vfsCore fromVault:vault];
Expand Down
Loading