diff options
author | Eskil Abrahamsen Blomfeldt <eblomfel@trolltech.com> | 2009-08-26 12:59:51 (GMT) |
---|---|---|
committer | Eskil Abrahamsen Blomfeldt <eblomfel@trolltech.com> | 2009-08-26 13:02:36 (GMT) |
commit | eb39ecce531f67b4f8b791f76796ab9010c9e745 (patch) | |
tree | d015a90570482b3ecd5103b28b79b00ac02c883a /src/gui/text | |
parent | b69a8a9f6a88f6da971fd18641cfac26cc1035f5 (diff) | |
download | Qt-eb39ecce531f67b4f8b791f76796ab9010c9e745.zip Qt-eb39ecce531f67b4f8b791f76796ab9010c9e745.tar.gz Qt-eb39ecce531f67b4f8b791f76796ab9010c9e745.tar.bz2 |
Avoid undefined text metrics when GetTextMetrics() in QFontEngineWin
If GetTextMetrics() should fail, the results are undefined. When the
undefined data are used, e.g. when painting text, this can cause a
crash. To avoid the crash and make it clear that the metrics cannot be
retrieved, we zero out the entire structure.
Task-number: 251172
Reviewed-by: gunnar
Diffstat (limited to 'src/gui/text')
-rw-r--r-- | src/gui/text/qfontengine_win.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/gui/text/qfontengine_win.cpp b/src/gui/text/qfontengine_win.cpp index 173b822..7a9d958 100644 --- a/src/gui/text/qfontengine_win.cpp +++ b/src/gui/text/qfontengine_win.cpp @@ -327,8 +327,10 @@ QFontEngineWin::QFontEngineWin(const QString &name, HFONT _hfont, bool stockFont BOOL res = GetTextMetrics(hdc, &tm); fontDef.fixedPitch = !(tm.tmPitchAndFamily & TMPF_FIXED_PITCH); - if (!res) + if (!res) { qErrnoWarning("QFontEngineWin: GetTextMetrics failed"); + ZeroMemory(&tm, sizeof(TEXTMETRIC)); + } cache_cost = tm.tmHeight * tm.tmAveCharWidth * 2000; getCMap(); |