diff options
author | Edward Welbourne <edward.welbourne@qt.io> | 2018-09-20 13:36:05 +0200 |
---|---|---|
committer | Edward Welbourne <edward.welbourne@qt.io> | 2018-10-08 14:11:08 +0000 |
commit | ff7f09d18708119bebb94202d3a3dcb26149ee5a (patch) | |
tree | aa15d57cd1fdb9eed9776db38360ab0b4e59cb64 /src/corelib/serialization/qcborarray.h | |
parent | 7f079bf9d0f534fcec747f965565d99845df7aba (diff) |
Change QCborArray to pad with invalid on inserting past end
Likewise have mutating operator[] insert an invalid entry at its
target index, if beyond the end of the array. This makes it possible
to fill an array from high index to low, for example.
Change-Id: If71699c20e2623142214ce2c11c4d6e4a120c989
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/serialization/qcborarray.h')
-rw-r--r-- | src/corelib/serialization/qcborarray.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/corelib/serialization/qcborarray.h b/src/corelib/serialization/qcborarray.h index f24bb41759..ae6b8c09d7 100644 --- a/src/corelib/serialization/qcborarray.h +++ b/src/corelib/serialization/qcborarray.h @@ -188,7 +188,12 @@ public: QCborValue operator[](qsizetype i) const { return at(i); } QCborValueRef first() { Q_ASSERT(!isEmpty()); return begin()[0]; } QCborValueRef last() { Q_ASSERT(!isEmpty()); return begin()[size() - 1]; } - QCborValueRef operator[](qsizetype i) { Q_ASSERT(i < size()); return begin()[i]; } + QCborValueRef operator[](qsizetype i) + { + if (i >= size()) + insert(i, QCborValue()); + return begin()[i]; + } void insert(qsizetype i, const QCborValue &value); void insert(qsizetype i, QCborValue &&value); |