summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Faure <faure@kde.org>2011-10-23 21:02:54 +0200
committerDavid Faure <faure@kde.org>2011-10-24 00:09:23 +0200
commit8ffea3fe0ecfd05660515ae8ddcd24e3eedb6fff (patch)
tree35f2525c666c724a7c37a590b15fb5df23994b27
parent809a8623eb89b30c6cd2623e860881cc561eb723 (diff)
Fix usage of mask in magic rules.
Fixes two more unittest failures: application/annodex and video/mp2t
-rw-r--r--src/mimetypes/qmimemagicrule.cpp5
-rw-r--r--src/mimetypes/qmimemagicrulematcher.cpp1
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".