]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
bench : more accurate block nb in error report
authorYann Collet <yann.collet.73@gmail.com>
Thu, 21 Jan 2016 01:21:17 +0000 (02:21 +0100)
committerYann Collet <yann.collet.73@gmail.com>
Thu, 21 Jan 2016 01:21:17 +0000 (02:21 +0100)
programs/bench.c

index 14b36b489ff225696b6fdde39794239c06c65c17..fcd674aac9497fe5638bcba90f0dbb0bf91eefa8 100644 (file)
@@ -351,14 +351,21 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
             crcCheck = XXH64(resultBuffer, srcSize, 0);
             if (crcOrig!=crcCheck)
             {
-                unsigned u;
-                unsigned eBlockSize = (unsigned)(MIN(65536*2, blockSize));
+                size_t u;
                 DISPLAY("\n!!! WARNING !!! %14s : Invalid Checksum : %x != %x\n", displayName, (unsigned)crcOrig, (unsigned)crcCheck);
                 for (u=0; u<srcSize; u++)
                 {
                     if (((const BYTE*)srcBuffer)[u] != ((const BYTE*)resultBuffer)[u])
                     {
-                        printf("Decoding error at pos %u (block %u, pos %u) \n", u, u / eBlockSize, u % eBlockSize);
+                        U32 bn;
+                        size_t bacc = 0;
+                        printf("Decoding error at pos %u ", (U32)u);
+                        for (bn = 0; bn < nbBlocks; bn++)
+                        {
+                            if (bacc + blockTable[bn].srcSize > u) break;
+                            bacc += blockTable[bn].srcSize;
+                        }
+                        printf("(block %u, pos %u) \n", bn, (U32)(u - bacc));
                         break;
                     }
                 }