QTextEngine: don't pass empty data to bidiReorder
The algorithm in QTextEngine::bidiReorder() doesn't like an empty level and visual order list. Found by GCC 12's slightly misleading warning: qtextengine.cpp:3838:29: error: ‘levels’ may be used uninitialized [-Werror=maybe-uninitialized] qtextengine.cpp:1174:6: note: by argument 2 of type ‘const quint8*’ {aka ‘const unsigned char*’} to ‘static void QTextEngine::bidiReorder(int, const quint8*, int*)’ declared here qtextengine.cpp:3835:28: note: ‘levels’ declared here 3835 | QVarLengthArray<uchar> levels(nItems); | ^~~~~~ Pick-to: 6.2 6.3 Change-Id: If05aeeb7176e4f13af9afffd16e8490f131f160e Reviewed-by: Lars Knoll <lars.knoll@qt.io>
This commit is contained in:
parent
e92e48bc79
commit
54eae2d610
@ -3832,10 +3832,12 @@ QTextLineItemIterator::QTextLineItemIterator(QTextEngine *_eng, int _lineNum, co
|
||||
|
||||
x += eng->alignLine(line);
|
||||
|
||||
QVarLengthArray<uchar> levels(nItems);
|
||||
for (int i = 0; i < nItems; ++i)
|
||||
levels[i] = eng->layoutData->items.at(i + firstItem).analysis.bidiLevel;
|
||||
QTextEngine::bidiReorder(nItems, levels.data(), visualOrder.data());
|
||||
if (nItems > 0) {
|
||||
QVarLengthArray<uchar> levels(nItems);
|
||||
for (int i = 0; i < nItems; ++i)
|
||||
levels[i] = eng->layoutData->items.at(i + firstItem).analysis.bidiLevel;
|
||||
QTextEngine::bidiReorder(nItems, levels.data(), visualOrder.data());
|
||||
}
|
||||
|
||||
eng->shapeLine(line);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user