diff options
author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2021-03-19 17:22:14 +0100 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2021-04-19 15:18:46 +0200 |
commit | 6c3599460ca9a7eaba728adbb4b7ab3d519f3ffb (patch) | |
tree | 2b291c714aba5c9dc391ce74f5175e0810fa1a98 | |
parent | 777053cfff40570282e861527e0e52e22a359629 (diff) |
Assert that engine isn't nullptr before dereferencing
Various checks for "engine" in the previous code suggested that
engine might be nullptr by the time we want to populate the
out-parameters.
This must not be the case, and QFontDatabase::load asserts
already that a valid engine is loaded and returned.
Fix static analyzer warning 7f68daa282c72e8cc172c681eb02f559 by
asserting it here as well.
As a drive-by, change the tested out-parameter to the last one
in the list of optional parameters.
Pick-to: 6.1
Change-Id: I3d9ff0f5f7c4740014301c073480d14fef54e2fb
Reviewed-by: Jonas Karlsson <jonas.karlsson@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
-rw-r--r-- | src/gui/text/qtextengine.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index b31b880693..898538b64f 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -2351,8 +2351,8 @@ QFontEngine *QTextEngine::fontEngine(const QScriptItem &si, QFixed *ascent, QFix font = font.resolve(fnt); } engine = font.d->engineForScript(script); - if (engine) - engine->ref.ref(); + Q_ASSERT(engine); + engine->ref.ref(); QTextCharFormat::VerticalAlignment valign = f.verticalAlignment(); if (valign == QTextCharFormat::AlignSuperScript || valign == QTextCharFormat::AlignSubScript) { @@ -2382,9 +2382,8 @@ QFontEngine *QTextEngine::fontEngine(const QScriptItem &si, QFixed *ascent, QFix engine = feCache.prevFontEngine; else { engine = font.d->engineForScript(script); - - if (engine) - engine->ref.ref(); + Q_ASSERT(engine); + engine->ref.ref(); if (feCache.prevFontEngine) releaseCachedFontEngine(feCache.prevFontEngine); feCache.prevFontEngine = engine; @@ -2402,7 +2401,10 @@ QFontEngine *QTextEngine::fontEngine(const QScriptItem &si, QFixed *ascent, QFix } } - if (ascent) { + if (leading) { + Q_ASSERT(engine); + Q_ASSERT(ascent); + Q_ASSERT(descent); *ascent = engine->ascent(); *descent = engine->descent(); *leading = engine->leading(); |