diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2014-07-25 13:47:49 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2014-07-28 16:38:02 +0200 |
commit | 5c24c14a0e0fb3bb536e29d0d9abc5980640a4d1 (patch) | |
tree | 433a6dba208fbd320577c8d80b464020d1c0aa12 | |
parent | 6ad66140b1e63fa6e21c7f33d845a472c4390823 (diff) |
Windows: Streamline rawfont-lookup code.
Fix ugly warnings by MinGW:
qwindowsfontdatabase.cpp: In member function '{anonymous}::TableDirectory*
{anonymous}::EmbeddedFont::tableDirectoryEntry(const QByteArray&)':qwindowsfontdatabase.cpp:167:42: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (Q_UNLIKELY(m_fontData.size() < sizeof(OffsetSubTable)))
^
..\..\..\..\include/QtCore/../../src/corelib/global/qcompilerdetection.h:202:49:
note: in definition of macro 'Q_UNLIKELY'
Change-Id: I47fac598ed1b6623146fb437c00da64d8e8b6984
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
-rw-r--r-- | src/plugins/platforms/windows/qwindowsfontdatabase.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp index aad6c8cf31..363d8b2d5c 100644 --- a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp +++ b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp @@ -164,25 +164,24 @@ namespace { { Q_ASSERT(tagName.size() == 4); quint32 tagId = *(reinterpret_cast<const quint32 *>(tagName.constData())); - if (Q_UNLIKELY(m_fontData.size() < sizeof(OffsetSubTable))) + const size_t fontDataSize = m_fontData.size(); + if (Q_UNLIKELY(fontDataSize < sizeof(OffsetSubTable))) return 0; OffsetSubTable *offsetSubTable = reinterpret_cast<OffsetSubTable *>(m_fontData.data()); TableDirectory *tableDirectory = reinterpret_cast<TableDirectory *>(offsetSubTable + 1); - quint16 tableCount = qFromBigEndian<quint16>(offsetSubTable->numTables); - if (Q_UNLIKELY(quint32(m_fontData.size()) < sizeof(OffsetSubTable) + sizeof(TableDirectory) * tableCount)) + const size_t tableCount = qFromBigEndian<quint16>(offsetSubTable->numTables); + if (Q_UNLIKELY(fontDataSize < sizeof(OffsetSubTable) + sizeof(TableDirectory) * tableCount)) return 0; - TableDirectory *nameTableDirectoryEntry = 0; - for (int i = 0; i < tableCount; ++i, ++tableDirectory) { - if (tableDirectory->identifier == tagId) { - nameTableDirectoryEntry = tableDirectory; - break; - } + TableDirectory *tableDirectoryEnd = tableDirectory + tableCount; + for (TableDirectory *entry = tableDirectory; entry < tableDirectoryEnd; ++entry) { + if (entry->identifier == tagId) + return entry; } - return nameTableDirectoryEntry; + return 0; } QString EmbeddedFont::familyName(TableDirectory *nameTableDirectoryEntry) |