Skip to content

Commit

Permalink
Fix crash caused by using active directory metadata object after it i…
Browse files Browse the repository at this point in the history
…s deleted in db

Signed-off-by: Claudio Cambra <[email protected]>
  • Loading branch information
claucambra committed May 14, 2024
1 parent 3596deb commit 6d57766
Showing 1 changed file with 20 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ extension FilesDatabaseManager {
}

let directoryMetadataCopy = ItemMetadata(value: directoryMetadata)
let directoryOcId = directoryMetadata.ocId
let directoryUrlPath = directoryMetadata.serverUrl + "/" + directoryMetadata.fileName
let directoryAccount = directoryMetadata.account
let directoryEtag = directoryMetadata.etag
Expand All @@ -107,7 +108,12 @@ extension FilesDatabaseManager {

guard deleteItemMetadata(ocId: directoryMetadata.ocId) else {
Self.logger.debug(
"Failure to delete root directory metadata in recursive delete. ocID: \(directoryMetadata.ocId, privacy: .public), etag: \(directoryEtag, privacy: .public), serverUrl: \(directoryUrlPath, privacy: .public)"
"""
Failure to delete root directory metadata in recursive delete.
ocID: \(directoryOcId, privacy: .public),
etag: \(directoryEtag, privacy: .public),
serverUrl: \(directoryUrlPath, privacy: .public)
"""
)
return nil
}
Expand All @@ -118,18 +124,25 @@ extension FilesDatabaseManager {
"account == %@ AND serverUrl BEGINSWITH %@", directoryAccount, directoryUrlPath)

for result in results {
let successfulItemMetadataDelete = deleteItemMetadata(ocId: result.ocId)
if successfulItemMetadataDelete {
deletedMetadatas.append(ItemMetadata(value: result))
let resultOcId = result.ocId
let inactiveItemMetadata = ItemMetadata(value: result)

if deleteItemMetadata(ocId: result.ocId) {
deletedMetadatas.append(inactiveItemMetadata)
}

if localFileMetadataFromOcId(result.ocId) != nil {
deleteLocalFileMetadata(ocId: result.ocId)
if localFileMetadataFromOcId(resultOcId) != nil {
deleteLocalFileMetadata(ocId: resultOcId)
}
}

Self.logger.debug(
"Completed deletions in directory recursive delete. ocID: \(directoryMetadata.ocId, privacy: .public), etag: \(directoryEtag, privacy: .public), serverUrl: \(directoryUrlPath, privacy: .public)"
"""
Completed deletions in directory recursive delete.
ocID: \(directoryOcId, privacy: .public),
etag: \(directoryEtag, privacy: .public),
serverUrl: \(directoryUrlPath, privacy: .public)
"""
)

return deletedMetadatas
Expand Down

0 comments on commit 6d57766

Please sign in to comment.