Deprecate calling QList::insert/removeAt with out of bounds index
Users should not call any QList API with indices that are out of bounds. Deprecate this behavior and make sure users get warnings in debug mode and assertions if they disable deprecated functionality. [ChangeLog][Important Behavior Changes] Calling QList::insert() or removeAt() with an out of bounds index is deprecated and will not be supported in Qt 6 anymore. Change-Id: I97adecc2e2aabd36ea2cc69e0895d625f78b32a0 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
This commit is contained in:
parent
746ab5f16d
commit
ebf695bc77
@ -847,9 +847,10 @@ void **QListData::erase(void **xi)
|
||||
|
||||
/*! \fn template <class T> void QList<T>::insert(int i, const T &value)
|
||||
|
||||
Inserts \a value at index position \a i in the list. If \a i <= 0,
|
||||
the value is prepended to the list. If \a i >= size(), the
|
||||
value is appended to the list.
|
||||
Inserts \a value at index position \a i in the list.
|
||||
|
||||
If \a i == 0, the value is prepended to the list. If \a i == size(),
|
||||
the value is appended to the list.
|
||||
|
||||
Example:
|
||||
\snippet code/src_corelib_tools_qlistdata.cpp 8
|
||||
|
@ -580,8 +580,16 @@ inline T &QList<T>::operator[](int i)
|
||||
detach(); return reinterpret_cast<Node *>(p.at(i))->t(); }
|
||||
template <typename T>
|
||||
inline void QList<T>::removeAt(int i)
|
||||
{ if(i >= 0 && i < p.size()) { detach();
|
||||
node_destruct(reinterpret_cast<Node *>(p.at(i))); p.remove(i); } }
|
||||
{
|
||||
#if !QT_DEPRECATED_SINCE(5, 15)
|
||||
Q_ASSERT_X(i >= 0 && i < p.size(), "QList<T>::removeAt", "index out of range");
|
||||
#elif !defined(QT_NO_DEBUG)
|
||||
if (i < 0 || i >= p.size())
|
||||
qWarning("QList::removeAt(): Index out of range.");
|
||||
#endif
|
||||
detach();
|
||||
node_destruct(reinterpret_cast<Node *>(p.at(i))); p.remove(i);
|
||||
}
|
||||
template <typename T>
|
||||
inline T QList<T>::takeAt(int i)
|
||||
{ Q_ASSERT_X(i >= 0 && i < p.size(), "QList<T>::take", "index out of range");
|
||||
@ -676,6 +684,12 @@ inline void QList<T>::prepend(const T &t)
|
||||
template <typename T>
|
||||
inline void QList<T>::insert(int i, const T &t)
|
||||
{
|
||||
#if !QT_DEPRECATED_SINCE(5, 15)
|
||||
Q_ASSERT_X(i >= 0 && i <= p.size(), "QList<T>::insert", "index out of range");
|
||||
#elif !defined(QT_NO_DEBUG)
|
||||
if (i < 0 || i > p.size())
|
||||
qWarning("QList::insert(): Index out of range.");
|
||||
#endif
|
||||
if (d->ref.isShared()) {
|
||||
Node *n = detach_helper_grow(i, 1);
|
||||
QT_TRY {
|
||||
|
Loading…
Reference in New Issue
Block a user