summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/text/freetype/qfontengine_ft.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/gui/text/freetype/qfontengine_ft.cpp b/src/gui/text/freetype/qfontengine_ft.cpp
index 280498f98d..ae1e139251 100644
--- a/src/gui/text/freetype/qfontengine_ft.cpp
+++ b/src/gui/text/freetype/qfontengine_ft.cpp
@@ -1051,7 +1051,8 @@ QFontEngineFT::Glyph *QFontEngineFT::loadGlyph(QGlyphSet *set, uint glyph,
info.height = TRUNC(top - bottom);
// If any of the metrics are too large to fit, don't cache them
- if (areMetricsTooLarge(info))
+ // Also, avoid integer overflow when linearAdvance is to large to fit in a signed short
+ if (areMetricsTooLarge(info) || info.linearAdvance > 0x7FFF)
return nullptr;
g = new Glyph;