diff options
author | Marc Mutz <marc.mutz@qt.io> | 2022-06-01 13:18:32 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2022-06-02 08:07:40 +0000 |
commit | 80f0bf64e49f07a73712998ddc8a0eebd1b660b6 (patch) | |
tree | b1b4c0acb5db238188f70d38a8a71ecf4c659264 /src | |
parent | 92419f7f1bcee1bd390f040a3909d19556888c9d (diff) |
QQmlListCompositor: suppress GCC 12 -Warray-bounds warnings
Despite my best efforts in teaching GCC 12 to understand that
groupCount is always <= MaxGroupCount, it continued to issue these
warnings:
In member function ‘void QQmlListCompositor::iterator::incrementIndexes(int, uint)’,
inlined from ‘void QQmlListCompositor::iterator::incrementIndexes(int)’ at qtdeclarative/src/qmlmodels/qqmllistcompositor_p.h:138:65,
inlined from ‘void QQmlListCompositor::move(Group, int, Group, int, int, Group, QVector<Remove>*, QVector<Insert>*)’ at qtdeclarative/src/qmlmodels/qqmllistcompositor.cpp:852:40:
qtdeclarative/src/qmlmodels/qqmllistcompositor_p.h:336:20: error: array subscript 28 is above array bounds of ‘int [11]’ [-Werror=array-bounds]
336 | index[i] += difference;
| ~~~~~~~^
qtdeclarative/src/qmlmodels/qqmllistcompositor_p.h: In member function ‘void QQmlListCompositor::move(Group, int, Group, int, int, Group, QVector<Remove>*, QVector<Insert>*)’:
qtdeclarative/src/qmlmodels/qqmllistcompositor_p.h:154:13: note: while referencing ‘QQmlListCompositor::iterator::index’
154 | int index[MaximumGroupCount] = { 0 };
| ^~~~~
In member function ‘void QQmlListCompositor::iterator::incrementIndexes(int, uint)’,
inlined from ‘void QQmlListCompositor::iterator::incrementIndexes(int)’ at qtdeclarative/src/qmlmodels/qqmllistcompositor_p.h:138:65,
inlined from ‘void QQmlListCompositor::move(Group, int, Group, int, int, Group, QVector<Remove>*, QVector<Insert>*)’ at qtdeclarative/src/qmlmodels/qqmllistcompositor.cpp:852:40:
qtdeclarative/src/qmlmodels/qqmllistcompositor_p.h:336:20: error: array subscript 28 is above array bounds of ‘int [11]’ [-Werror=array-bounds]
336 | index[i] += difference;
| ~~~~~~~^
qtdeclarative/src/qmlmodels/qqmllistcompositor_p.h: In member function ‘void QQmlListCompositor::move(Group, int, Group, int, int, Group, QVector<Remove>*, QVector<Insert>*)’:
qtdeclarative/src/qmlmodels/qqmllistcompositor_p.h:154:13: note: while referencing ‘QQmlListCompositor::iterator::index’
154 | int index[MaximumGroupCount] = { 0 };
| ^~~~~
cc1plus: all warnings being treated as errors
Therefore, I see no other solution than to suppress the warning the
hard way.
Pick-to: 6.3 6.2 5.15
Fixes: QTBUG-103924
Change-Id: Ic46009daa35357c6e6bb0fd1c16d020e360b7525
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/qmlmodels/qqmllistcompositor_p.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/qmlmodels/qqmllistcompositor_p.h b/src/qmlmodels/qqmllistcompositor_p.h index 90f9b6986f..7bad6bd490 100644 --- a/src/qmlmodels/qqmllistcompositor_p.h +++ b/src/qmlmodels/qqmllistcompositor_p.h @@ -312,6 +312,10 @@ Q_DECLARE_TYPEINFO(QQmlListCompositor::Change, Q_PRIMITIVE_TYPE); Q_DECLARE_TYPEINFO(QQmlListCompositor::Remove, Q_PRIMITIVE_TYPE); Q_DECLARE_TYPEINFO(QQmlListCompositor::Insert, Q_PRIMITIVE_TYPE); +QT_WARNING_PUSH +// GCC isn't wrong, as groupCount is public in iterator, but we tried Q_ASSUME(), +// right in front of the loops, and it didn't help, so we disable the warning: +QT_WARNING_DISABLE_GCC("-Warray-bounds") inline QQmlListCompositor::iterator::iterator( Range *range, int offset, Group group, int groupCount) : range(range) @@ -339,6 +343,7 @@ inline void QQmlListCompositor::iterator::decrementIndexes(int difference, uint index[i] -= difference; } } +QT_WARNING_POP // -Warray-bounds inline QQmlListCompositor::insert_iterator::insert_iterator( Range *range, int offset, Group group, int groupCount) |