From da1634a125264fb2abc7adcf0af7c20d71cf248a Mon Sep 17 00:00:00 2001 From: Carl Schwan Date: Wed, 26 Oct 2022 12:41:50 +0200 Subject: Move check if node exists earlier Otherwise we capture the not found exception too late Signed-off-by: Carl Schwan --- lib/Trash/TrashBackend.php | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/lib/Trash/TrashBackend.php b/lib/Trash/TrashBackend.php index a6d3b068..0f4d5122 100644 --- a/lib/Trash/TrashBackend.php +++ b/lib/Trash/TrashBackend.php @@ -376,20 +376,24 @@ class TrashBackend implements ITrashBackend { $nodes = []; // cache foreach ($trashItems as $groupTrashItem) { $nodeName = $groupTrashItem['name'] . '.d' . $groupTrashItem['deleted_time']; - $nodes[$nodeName] = $node = $trashFolder->get($nodeName); + try { + $nodes[$nodeName] = $node = $trashFolder->get($nodeName); + } catch (NotFoundException $e) { + $this->trashManager->removeItem($folderId, $groupTrashItem['name'], $groupTrashItem['deleted_time']); + continue; + } $sizeInTrash += $node->getSize(); } foreach ($trashItems as $groupTrashItem) { if ($expiration->isExpired($groupTrashItem['deleted_time'], $folder['quota'] > 0 && $folder['quota'] < ($folder['size'] + $sizeInTrash))) { - try { - $nodeName = $groupTrashItem['name'] . '.d' . $groupTrashItem['deleted_time']; - $node = $nodes[$nodeName]; - $size += $node->getSize(); - $count += 1; - } catch (NotFoundException $e) { - $this->trashManager->removeItem($folderId, $groupTrashItem['name'], $groupTrashItem['deleted_time']); + $nodeName = $groupTrashItem['name'] . '.d' . $groupTrashItem['deleted_time']; + if (!isset($nodes[$nodeName])) { continue; } + + $node = $nodes[$nodeName]; + $size += $node->getSize(); + $count += 1; if ($node->getStorage()->unlink($node->getInternalPath()) === false) { throw new \Exception('Failed to remove item from trashbin'); } -- cgit v1.2.3