summaryrefslogtreecommitdiffstats
path: root/src/gui/text
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2022-04-22 10:45:36 -0700
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-04-27 01:52:31 +0000
commitec81f1a9fce60398a70e8e450c1e8c0942d7e10d (patch)
treec4d34a1598c78a15c406b460ecc86ab1b2baa1b4 /src/gui/text
parentf4e4af57b8829a0290264b9612be4a3a0946e88d (diff)
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); | ^~~~~~ Change-Id: If05aeeb7176e4f13af9afffd16e8490f131f160e Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 54eae2d610bee85a40050d76fc0b01cf6a181f6e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src/gui/text')
-rw-r--r--src/gui/text/qtextengine.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index 9e294d083e..d32b3d7ecb 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -3837,10 +3837,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);
}