Simplify file comparison
authorHannah von Reth <hannah.vonreth@owncloud.com>
Mon, 14 Dec 2020 11:37:33 +0000 (12:37 +0100)
committerKevin Ottens <kevin.ottens@nextcloud.com>
Wed, 30 Dec 2020 15:17:46 +0000 (16:17 +0100)
src/libsync/filesystem.cpp

index 4b68e6728b9ac7c2e4f8a4fa02f510a0af402178..57452bc67fd8b5e94bb6120cbba7279a81fe99d2 100644 (file)
@@ -42,22 +42,17 @@ bool FileSystem::fileEquals(const QString &fn1, const QString &fn2)
     }
 
     const int BufferSize = 16 * 1024;
-    char buffer1[BufferSize];
-    char buffer2[BufferSize];
-    do {
-        int r = f1.read(buffer1, BufferSize);
-        if (f2.read(buffer2, BufferSize) != r) {
-            // this should normally not happen: the files are supposed to have the same size.
+    QByteArray buffer1(BufferSize, 0);
+    QByteArray buffer2(BufferSize, 0);
+    // the files have the same size, compare all of it
+    while(!f1.atEnd()){
+        f1.read(buffer1.data(), BufferSize);
+        f2.read(buffer2.data(), BufferSize);
+        if (buffer1 != buffer2) {
             return false;
         }
-        if (r <= 0) {
-            return true;
-        }
-        if (memcmp(buffer1, buffer2, r) != 0) {
-            return false;
-        }
-    } while (true);
-    return false;
+    };
+    return true;
 }
 
 time_t FileSystem::getModTime(const QString &filename)