From 05078459de5dae65b9bb7cf2a1bc216528291648 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Mon, 19 Oct 2020 10:01:04 +0200 Subject: Use valid glyph index for box font engine Glyph index 0 is reserved for "glyph not found", which can confuse Harfbuzz. For QFontEngineBox we always return a valid glyph since it is the fallback font when no other fonts are available. Symptom of issue was that we could get to Q_UNREACHABLE for certain strings when Harfbuzz returned a glyph count of 0. [ChangeLog][QtGui] Fixed a potential crash when rendering text with an empty font database. Fixes: QTBUG-85016 Pick-to: 5.15 Change-Id: Iaf1d003cdff57320bf4327aa8e63dffd9d1da82c Reviewed-by: Lars Knoll --- src/gui/text/qfontengine.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/gui/text') diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp index 5cd96e5374..15036718c3 100644 --- a/src/gui/text/qfontengine.cpp +++ b/src/gui/text/qfontengine.cpp @@ -1539,7 +1539,7 @@ QFontEngineBox::~QFontEngineBox() glyph_t QFontEngineBox::glyphIndex(uint ucs4) const { Q_UNUSED(ucs4); - return 0; + return 1; } bool QFontEngineBox::stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, QFontEngine::ShaperFlags flags) const @@ -1554,7 +1554,7 @@ bool QFontEngineBox::stringToCMap(const QChar *str, int len, QGlyphLayout *glyph QStringIterator it(str, str + len); while (it.hasNext()) { it.advance(); - glyphs->glyphs[ucs4Length++] = 0; + glyphs->glyphs[ucs4Length++] = 1; } *nglyphs = ucs4Length; -- cgit v1.2.3