diff options
author | David Faure <faure@kde.org> | 2011-10-23 21:02:54 +0200 |
---|---|---|
committer | David Faure <faure@kde.org> | 2011-10-24 00:09:23 +0200 |
commit | 8ffea3fe0ecfd05660515ae8ddcd24e3eedb6fff (patch) | |
tree | 35f2525c666c724a7c37a590b15fb5df23994b27 | |
parent | 809a8623eb89b30c6cd2623e860881cc561eb723 (diff) |
Fix usage of mask in magic rules.
Fixes two more unittest failures: application/annodex and video/mp2t
-rw-r--r-- | src/mimetypes/qmimemagicrule.cpp | 5 | ||||
-rw-r--r-- | src/mimetypes/qmimemagicrulematcher.cpp | 1 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/mimetypes/qmimemagicrule.cpp b/src/mimetypes/qmimemagicrule.cpp index c93ff3d..ee1feed 100644 --- a/src/mimetypes/qmimemagicrule.cpp +++ b/src/mimetypes/qmimemagicrule.cpp @@ -109,10 +109,13 @@ static bool matchNumber(QMimeMagicRulePrivate *d, const QByteArray &data) const T value(d->number); const T mask(d->numberMask); + //qDebug() << "matchNumber" << "0x" << QString::number(d->number, 16) << "size" << sizeof(T); + //qDebug() << "mask" << QString::number(d->numberMask, 16); + const char *p = data.constData() + d->startPos; const char *e = data.constData() + qMin(data.size() - int(sizeof(T)), d->endPos + 1); for ( ; p < e; ++p) { - if ((*reinterpret_cast<const T*>(p) & mask) == value) + if ((*reinterpret_cast<const T*>(p) & mask) == (value & mask)) return true; } diff --git a/src/mimetypes/qmimemagicrulematcher.cpp b/src/mimetypes/qmimemagicrulematcher.cpp index 2f9e021..549e47e 100644 --- a/src/mimetypes/qmimemagicrulematcher.cpp +++ b/src/mimetypes/qmimemagicrulematcher.cpp @@ -28,6 +28,7 @@ QT_BEGIN_NAMESPACE /*! + \internal \class QMimeMagicRuleMatcher \brief A Magic matcher that checks a number of rules based on operator "or". |