diff options
author | Alessandro Portale <alessandro.portale@nokia.com> | 2010-02-05 20:31:10 (GMT) |
---|---|---|
committer | Jason McDonald <jason.mcdonald@nokia.com> | 2010-02-06 08:08:54 (GMT) |
commit | 7d9fa05f2e2d619007a063dd2cb2bca4a6027aea (patch) | |
tree | 9d3019d6248a1bdff5f388b06e10a81301f358fd | |
parent | d1ddad7bbf0164303d798f3d5e20ad898c2098c1 (diff) | |
download | Qt-7d9fa05f2e2d619007a063dd2cb2bca4a6027aea.zip Qt-7d9fa05f2e2d619007a063dd2cb2bca4a6027aea.tar.gz Qt-7d9fa05f2e2d619007a063dd2cb2bca4a6027aea.tar.bz2 |
Fixed casual crash in initializeDb (Symbian)
dynamic_cast should be used carefully with rvct before version 4.
We found that out after the a dynamic (down)-cast from CFont* to
CFbsFont* in QtGui suddenly failed.
We test for (TypeUid() == KCFbsFontUid), before doing the
cast. So, a static_cast is safe in this case. Also the other
two dynamic_casts in qfontdatabase_s60.cpp were changed to
static_cast.
http://bugreports.qt.nokia.com/browse/QTBUG-7963
Task-number: QTBUG-7963
Reviewed-by: lars
modified: src/gui/text/qfontdatabase_s60.cpp
(cherry picked from commit 3b7164b3188e9382510bef2211e82ef777faa75c)
-rw-r--r-- | src/gui/text/qfontdatabase_s60.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/gui/text/qfontdatabase_s60.cpp b/src/gui/text/qfontdatabase_s60.cpp index e36940f..b6a187a 100644 --- a/src/gui/text/qfontdatabase_s60.cpp +++ b/src/gui/text/qfontdatabase_s60.cpp @@ -246,8 +246,8 @@ static void initializeDb() QSymbianFbsHeapLock lock(QSymbianFbsHeapLock::Unlock); const int numTypeFaces = QS60Data::screenDevice()->NumTypefaces(); - const QFontDatabaseS60StoreImplementation *store = dynamic_cast<const QFontDatabaseS60StoreImplementation*>(db->s60Store); - Q_ASSERT(store); + const QFontDatabaseS60StoreImplementation *store = + static_cast<const QFontDatabaseS60StoreImplementation*>(db->s60Store); bool fontAdded = false; for (int i = 0; i < numTypeFaces; i++) { TTypefaceSupport typefaceSupport; @@ -258,8 +258,7 @@ static void initializeDb() continue; if (font->TypeUid() == KCFbsFontUid) { TOpenFontFaceAttrib faceAttrib; - const CFbsFont *cfbsFont = dynamic_cast<const CFbsFont *>(font); - Q_ASSERT(cfbsFont); + const CFbsFont *cfbsFont = static_cast<const CFbsFont *>(font); cfbsFont->GetFaceAttrib(faceAttrib); QtFontStyle::Key styleKey; @@ -390,8 +389,8 @@ QFontEngine *QFontDatabase::findFont(int script, const QFontPrivate *, const QFo QFontDef request = req; request.family = fontFamily; #if defined(QT_NO_FREETYPE) - const QFontDatabaseS60StoreImplementation *store = dynamic_cast<const QFontDatabaseS60StoreImplementation*>(db->s60Store); - Q_ASSERT(store); + const QFontDatabaseS60StoreImplementation *store = + static_cast<const QFontDatabaseS60StoreImplementation*>(db->s60Store); const QFontEngineS60Extensions *extension = store->extension(fontFamily); fe = new QFontEngineS60(request, extension); #else |