diff --git a/src/corelib/mimetypes/qmimedatabase.cpp b/src/corelib/mimetypes/qmimedatabase.cpp index c55904c1d0..dbe4d43c17 100644 --- a/src/corelib/mimetypes/qmimedatabase.cpp +++ b/src/corelib/mimetypes/qmimedatabase.cpp @@ -668,7 +668,7 @@ QList QMimeDatabase::mimeTypesForFileName(const QString &fileName) co QString QMimeDatabase::suffixForFileName(const QString &fileName) const { QMutexLocker locker(&d->mutex); - const int suffixLength = d->findByFileName(fileName).m_knownSuffixLength; + const qsizetype suffixLength = d->findByFileName(fileName).m_knownSuffixLength; return fileName.right(suffixLength); } diff --git a/src/corelib/mimetypes/qmimeglobpattern.cpp b/src/corelib/mimetypes/qmimeglobpattern.cpp index 381b635b90..d42b6e6d10 100644 --- a/src/corelib/mimetypes/qmimeglobpattern.cpp +++ b/src/corelib/mimetypes/qmimeglobpattern.cpp @@ -22,7 +22,8 @@ using namespace Qt::StringLiterals; Handles glob weights, and preferring longer matches over shorter matches. */ -void QMimeGlobMatchResult::addMatch(const QString &mimeType, int weight, const QString &pattern, int knownSuffixLength) +void QMimeGlobMatchResult::addMatch(const QString &mimeType, int weight, const QString &pattern, + qsizetype knownSuffixLength) { if (m_allMatchingMimeTypes.contains(mimeType)) return; @@ -59,11 +60,11 @@ void QMimeGlobMatchResult::addMatch(const QString &mimeType, int weight, const Q QMimeGlobPattern::PatternType QMimeGlobPattern::detectPatternType(const QString &pattern) const { - const int patternLength = pattern.size(); + const qsizetype patternLength = pattern.size(); if (!patternLength) return OtherPattern; - const int starCount = pattern.count(u'*'); + const qsizetype starCount = pattern.count(u'*'); const bool hasSquareBracket = pattern.indexOf(u'[') != -1; const bool hasQuestionMark = pattern.indexOf(u'?') != -1; @@ -108,10 +109,10 @@ bool QMimeGlobPattern::matchFileName(const QString &inputFileName) const const QString fileName = m_caseSensitivity == Qt::CaseInsensitive ? inputFileName.toLower() : inputFileName; - const int patternLength = m_pattern.size(); + const qsizetype patternLength = m_pattern.size(); if (!patternLength) return false; - const int fileNameLength = fileName.size(); + const qsizetype fileNameLength = fileName.size(); switch (m_patternType) { case SuffixPattern: { @@ -222,14 +223,10 @@ void QMimeAllGlobPatterns::removeMimeType(const QString &mimeType) void QMimeGlobPatternList::match(QMimeGlobMatchResult &result, const QString &fileName) const { - - QMimeGlobPatternList::const_iterator it = this->constBegin(); - const QMimeGlobPatternList::const_iterator endIt = this->constEnd(); - for (; it != endIt; ++it) { - const QMimeGlobPattern &glob = *it; + for (const QMimeGlobPattern &glob : *this) { if (glob.matchFileName(fileName)) { const QString pattern = glob.pattern(); - const int suffixLen = isSimplePattern(pattern) ? pattern.size() - 2 : 0; + const qsizetype suffixLen = isSimplePattern(pattern) ? pattern.size() - strlen("*.") : 0; result.addMatch(glob.mimeType(), glob.weight(), pattern, suffixLen); } } @@ -242,9 +239,9 @@ void QMimeAllGlobPatterns::matchingGlobs(const QString &fileName, QMimeGlobMatch // Now use the "fast patterns" dict, for simple *.foo patterns with weight 50 // (which is most of them, so this optimization is definitely worth it) - const int lastDot = fileName.lastIndexOf(u'.'); + const qsizetype lastDot = fileName.lastIndexOf(u'.'); if (lastDot != -1) { // if no '.', skip the extension lookup - const int ext_len = fileName.size() - lastDot - 1; + const qsizetype ext_len = fileName.size() - lastDot - 1; const QString simpleExtension = fileName.right(ext_len).toLower(); // (toLower because fast patterns are always case-insensitive and saved as lowercase) diff --git a/src/corelib/mimetypes/qmimeglobpattern_p.h b/src/corelib/mimetypes/qmimeglobpattern_p.h index bb54a086d4..8aaed665a9 100644 --- a/src/corelib/mimetypes/qmimeglobpattern_p.h +++ b/src/corelib/mimetypes/qmimeglobpattern_p.h @@ -26,13 +26,14 @@ QT_BEGIN_NAMESPACE struct QMimeGlobMatchResult { - void addMatch(const QString &mimeType, int weight, const QString &pattern, int knownSuffixLength = 0); + void addMatch(const QString &mimeType, int weight, const QString &pattern, + qsizetype knownSuffixLength = 0); QStringList m_matchingMimeTypes; // only those with highest weight QStringList m_allMatchingMimeTypes; int m_weight = 0; - int m_matchingPatternLength = 0; - int m_knownSuffixLength = 0; + qsizetype m_matchingPatternLength = 0; + qsizetype m_knownSuffixLength = 0; }; class QMimeGlobPattern diff --git a/src/corelib/mimetypes/qmimemagicrule.cpp b/src/corelib/mimetypes/qmimemagicrule.cpp index b0846e375b..3458fef6a1 100644 --- a/src/corelib/mimetypes/qmimemagicrule.cpp +++ b/src/corelib/mimetypes/qmimemagicrule.cpp @@ -61,12 +61,12 @@ bool QMimeMagicRule::operator==(const QMimeMagicRule &other) const } // Used by both providers -bool QMimeMagicRule::matchSubstring(const char *dataPtr, int dataSize, int rangeStart, int rangeLength, - int valueLength, const char *valueData, const char *mask) +bool QMimeMagicRule::matchSubstring(const char *dataPtr, qsizetype dataSize, int rangeStart, int rangeLength, + qsizetype valueLength, const char *valueData, const char *mask) { // Size of searched data. // Example: value="ABC", rangeLength=3 -> we need 3+3-1=5 bytes (ABCxx,xABCx,xxABC would match) - const int dataNeeded = qMin(rangeLength + valueLength - 1, dataSize - rangeStart); + const qsizetype dataNeeded = qMin(rangeLength + valueLength - 1, dataSize - rangeStart); if (!mask) { // callgrind says QByteArray::indexOf is much slower, since our strings are typically too @@ -90,7 +90,7 @@ bool QMimeMagicRule::matchSubstring(const char *dataPtr, int dataSize, int range // deviceSize is 4, so dataNeeded was max'ed to 4. // maxStartPos = 4 - 3 + 1 = 2, and indeed // we need to check for a match a positions 0 and 1 (ABCx and xABC). - const int maxStartPos = dataNeeded - valueLength + 1; + const qsizetype maxStartPos = dataNeeded - valueLength + 1; for (int i = 0; i < maxStartPos; ++i) { const char *d = readDataBase + i; bool valid = true; @@ -201,7 +201,7 @@ QMimeMagicRule::QMimeMagicRule(const QString &type, } // Parse for offset as "1" or "1:10" - const int colonIndex = offsets.indexOf(u':'); + const qsizetype colonIndex = offsets.indexOf(u':'); const QStringView startPosStr = QStringView{offsets}.mid(0, colonIndex); // \ These decay to returning 'offsets' const QStringView endPosStr = QStringView{offsets}.mid(colonIndex + 1);// / unchanged when colonIndex == -1 if (Q_UNLIKELY(!QMimeTypeParserBase::parseNumber(startPosStr, &m_startPos, errorString)) || diff --git a/src/corelib/mimetypes/qmimemagicrule_p.h b/src/corelib/mimetypes/qmimemagicrule_p.h index e1d4719026..bd1b72d113 100644 --- a/src/corelib/mimetypes/qmimemagicrule_p.h +++ b/src/corelib/mimetypes/qmimemagicrule_p.h @@ -63,7 +63,9 @@ public: static Type type(const QByteArray &type); static QByteArray typeName(Type type); - static bool matchSubstring(const char *dataPtr, int dataSize, int rangeStart, int rangeLength, int valueLength, const char *valueData, const char *mask); + static bool matchSubstring(const char *dataPtr, qsizetype dataSize, int rangeStart, + int rangeLength, qsizetype valueLength, const char *valueData, + const char *mask); private: Type m_type; diff --git a/src/corelib/mimetypes/qmimeprovider.cpp b/src/corelib/mimetypes/qmimeprovider.cpp index 8732d4c915..9ada7e8d8b 100644 --- a/src/corelib/mimetypes/qmimeprovider.cpp +++ b/src/corelib/mimetypes/qmimeprovider.cpp @@ -250,7 +250,10 @@ void QMimeBinaryProvider::matchGlobList(QMimeGlobMatchResult &result, CacheFile } } -bool QMimeBinaryProvider::matchSuffixTree(QMimeGlobMatchResult &result, QMimeBinaryProvider::CacheFile *cacheFile, int numEntries, int firstOffset, const QString &fileName, int charPos, bool caseSensitiveCheck) +bool QMimeBinaryProvider::matchSuffixTree(QMimeGlobMatchResult &result, + QMimeBinaryProvider::CacheFile *cacheFile, int numEntries, + int firstOffset, const QString &fileName, + qsizetype charPos, bool caseSensitiveCheck) { QChar fileChar = fileName[charPos]; int min = 0; @@ -298,7 +301,7 @@ bool QMimeBinaryProvider::matchSuffixTree(QMimeGlobMatchResult &result, QMimeBin bool QMimeBinaryProvider::matchMagicRule(QMimeBinaryProvider::CacheFile *cacheFile, int numMatchlets, int firstOffset, const QByteArray &data) { const char *dataPtr = data.constData(); - const int dataSize = data.size(); + const qsizetype dataSize = data.size(); for (int matchlet = 0; matchlet < numMatchlets; ++matchlet) { const int off = firstOffset + matchlet * 32; const int rangeStart = cacheFile->getUint32(off); diff --git a/src/corelib/mimetypes/qmimeprovider_p.h b/src/corelib/mimetypes/qmimeprovider_p.h index f5cc7bc3c0..7440c500b8 100644 --- a/src/corelib/mimetypes/qmimeprovider_p.h +++ b/src/corelib/mimetypes/qmimeprovider_p.h @@ -82,7 +82,9 @@ private: struct CacheFile; void matchGlobList(QMimeGlobMatchResult &result, CacheFile *cacheFile, int offset, const QString &fileName); - bool matchSuffixTree(QMimeGlobMatchResult &result, CacheFile *cacheFile, int numEntries, int firstOffset, const QString &fileName, int charPos, bool caseSensitiveCheck); + bool matchSuffixTree(QMimeGlobMatchResult &result, CacheFile *cacheFile, int numEntries, + int firstOffset, const QString &fileName, qsizetype charPos, + bool caseSensitiveCheck); bool matchMagicRule(CacheFile *cacheFile, int numMatchlets, int firstOffset, const QByteArray &data); QLatin1StringView iconForMime(CacheFile *cacheFile, int posListOffset, const QByteArray &inputMime); void loadMimeTypeList(); diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp index 34c159e074..6bb3bcb1cf 100644 --- a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp +++ b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp @@ -810,7 +810,7 @@ void tst_QMimeDatabase::findByFileName_data() QByteArray line(1024, Qt::Uninitialized); while (!f.atEnd()) { - int len = f.readLine(line.data(), 1023); + const qint64 len = f.readLine(line.data(), 1023); if (len <= 2 || line.at(0) == '#') continue;