diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp index 80c28a376aa..8cfe972bde8 100644 --- a/src/gui/text/qfontengine.cpp +++ b/src/gui/text/qfontengine.cpp @@ -432,9 +432,10 @@ bool QFontEngine::processHheaTable() const { QByteArray hhea = getSfntTable(MAKE_TAG('h', 'h', 'e', 'a')); if (hhea.size() >= 10) { - qint16 ascent = qFromBigEndian(hhea.constData() + 4); - qint16 descent = qFromBigEndian(hhea.constData() + 6); - qint16 leading = qFromBigEndian(hhea.constData() + 8); + auto ptr = hhea.constData(); + qint16 ascent = qFromBigEndian(ptr + 4); + qint16 descent = qFromBigEndian(ptr + 6); + qint16 leading = qFromBigEndian(ptr + 8); // Some fonts may have invalid HHEA data. We detect this and bail out. if (ascent == 0 && descent == 0) @@ -473,12 +474,13 @@ bool QFontEngine::processOS2Table() const { QByteArray os2 = getSfntTable(MAKE_TAG('O', 'S', '/', '2')); if (os2.size() >= 78) { - quint16 fsSelection = qFromBigEndian(os2.constData() + 62); - qint16 typoAscent = qFromBigEndian(os2.constData() + 68); - qint16 typoDescent = qFromBigEndian(os2.constData() + 70); - qint16 typoLineGap = qFromBigEndian(os2.constData() + 72); - quint16 winAscent = qFromBigEndian(os2.constData() + 74); - quint16 winDescent = qFromBigEndian(os2.constData() + 76); + auto ptr = os2.constData(); + quint16 fsSelection = qFromBigEndian(ptr + 62); + qint16 typoAscent = qFromBigEndian(ptr + 68); + qint16 typoDescent = qFromBigEndian(ptr + 70); + qint16 typoLineGap = qFromBigEndian(ptr + 72); + quint16 winAscent = qFromBigEndian(ptr + 74); + quint16 winDescent = qFromBigEndian(ptr + 76); enum { USE_TYPO_METRICS = 0x80 }; QFixed unitsPerEm = emSquareSize();