QFontDatabase: Fall back to "Any" writing system if none matches
The scriptForWritingSystem array has significantly fewer entries than QChar::Script. It can easily happen that we don't find a writing system for a given script. In that case, just assume any writing system can be used. This fixes an out-of-bounds array access resulting from the writing system index being one-past-end if std::find doesn't find a match. Change-Id: Ic277be1dad71af42d479e70e0b4bf29a7dc8d0a7 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>bb10
parent
8e3fdf1354
commit
9ccc2560c8
|
|
@ -1144,7 +1144,10 @@ static int match(int script, const QFontDef &request,
|
|||
|
||||
load(family_name, script);
|
||||
|
||||
const size_t writingSystem = std::find(scriptForWritingSystem, scriptForWritingSystem + QFontDatabase::WritingSystemsCount, script) - scriptForWritingSystem;
|
||||
size_t writingSystem = std::find(scriptForWritingSystem, scriptForWritingSystem +
|
||||
QFontDatabase::WritingSystemsCount, script) - scriptForWritingSystem;
|
||||
if (writingSystem >= QFontDatabase::WritingSystemsCount)
|
||||
writingSystem = QFontDatabase::Any;
|
||||
|
||||
QFontDatabasePrivate *db = privateDb();
|
||||
for (int x = 0; x < db->count; ++x) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue