diff options
author | kh1 <karsten.heimrich@digia.com> | 2013-09-24 14:14:14 +0200 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@digia.com> | 2013-09-24 16:39:33 +0200 |
commit | fc465784df7893abc180ede9b69b4e27aaa522f7 (patch) | |
tree | fb452b527a8cacda862ad66b366bfa79dc12e24a | |
parent | 74f1ba9329f70b9f4b716fa882774de883fbee75 (diff) |
We can't expect a multiple of 8 during marker search.
Once the marker was on a position not matching a multiple of
8 from the end, the search would fail. Now decrement by 1 byte.
Change-Id: Ia703c9074b3bef6b1a300865abfe24dcb2c8d5fd
Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
Reviewed-by: Niels Weber <niels.weber@digia.com>
-rw-r--r-- | src/libs/installer/binaryformat.cpp | 2 | ||||
-rw-r--r-- | tests/auto/installer/binaryformat/tst_binaryformat.cpp | 6 |
2 files changed, 4 insertions, 4 deletions
diff --git a/src/libs/installer/binaryformat.cpp b/src/libs/installer/binaryformat.cpp index 8e79e84c3..fe1c61ced 100644 --- a/src/libs/installer/binaryformat.cpp +++ b/src/libs/installer/binaryformat.cpp @@ -237,7 +237,7 @@ qint64 QInstaller::findMagicCookie(QFile *in, quint64 magicCookie) while (searched >= 0) { if (memcmp(&magicCookie, (mapped + searched), markerSize) == 0) return (fileSize - maxSearch) + searched; - searched -= markerSize; + --searched; } throw Error(QObject::tr("No marker found, stopped after %1.").arg(humanReadableSize(maxSearch))); diff --git a/tests/auto/installer/binaryformat/tst_binaryformat.cpp b/tests/auto/installer/binaryformat/tst_binaryformat.cpp index 6e520dc3e..59f0e8e03 100644 --- a/tests/auto/installer/binaryformat/tst_binaryformat.cpp +++ b/tests/auto/installer/binaryformat/tst_binaryformat.cpp @@ -46,7 +46,7 @@ #include <QTest> #include <QTemporaryFile> -static const qint64 scTinySize = 51200LL; +static const qint64 scTinySize = 72704LL; static const qint64 scSmallSize = 524288LL; static const qint64 scLargeSize = 2097152LL; @@ -92,7 +92,7 @@ private slots: void testFindMagicCookieWithError() { - QTest::ignoreMessage(QtDebugMsg, "create Error-Exception: \"No marker found, stopped after 50.00 KiB.\" "); + QTest::ignoreMessage(QtDebugMsg, "create Error-Exception: \"No marker found, stopped after 71.00 KiB.\" "); QTemporaryFile file; file.open(); @@ -103,7 +103,7 @@ private slots: // throws QInstaller::findMagicCookie(&file, QInstaller::MagicCookie); } catch (const QInstaller::Error &error) { - QCOMPARE(qPrintable(error.message()), "No marker found, stopped after 50.00 KiB."); + QCOMPARE(qPrintable(error.message()), "No marker found, stopped after 71.00 KiB."); } catch (...) { QFAIL("Unexpected error."); } |