aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2022-06-01 13:18:32 +0200
committerMarc Mutz <marc.mutz@qt.io>2022-06-02 08:07:40 +0000
commit80f0bf64e49f07a73712998ddc8a0eebd1b660b6 (patch)
treeb1b4c0acb5db238188f70d38a8a71ecf4c659264 /src
parent92419f7f1bcee1bd390f040a3909d19556888c9d (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.h5
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)