diff --git a/apps/files/tests/Command/VerifyChecksumsTest.php b/apps/files/tests/Command/VerifyChecksumsTest.php index 37e00193e034..e6f178433360 100644 --- a/apps/files/tests/Command/VerifyChecksumsTest.php +++ b/apps/files/tests/Command/VerifyChecksumsTest.php @@ -135,10 +135,10 @@ private function refreshFileInfo(File &$f) { private function assertChecksumsAreCorrect(array $files) { foreach ($files as $key => $file) { - /** @var File $f */ - $f = $files[$key]['file']; $expectedChecksums = $files[$key]['expectedChecksums']; $this->refreshFileInfo($files[$key]['file']); + /** @var File $f */ + $f = $files[$key]['file']; $this->assertSame( $expectedChecksums(), $f->getChecksum() diff --git a/lib/private/Files/Cache/Scanner.php b/lib/private/Files/Cache/Scanner.php index 88f1e711a3a1..8ff4d1ab19b6 100644 --- a/lib/private/Files/Cache/Scanner.php +++ b/lib/private/Files/Cache/Scanner.php @@ -206,9 +206,12 @@ public function scanFile($file, $reuseExisting = 0, $parentId = -1, $cacheData = } if (!empty($newData)) { // Only reset checksum on file change - foreach (\array_intersect_key($newData, $data) as $key => $value) { - if (\in_array($key, ['size', 'storage_mtime', 'mtime', 'etag']) && $data[$key] != $newData[$key]) { - $newData['checksum'] = ''; + if ($fileId > 0 && !isset($newData['checksum'])) { + foreach (['size', 'storage_mtime', 'mtime', 'etag'] as $dataKey) { + if (isset($newData[$dataKey])) { + $newData['checksum'] = ''; + break; + } } }