summaryrefslogtreecommitdiffstats
path: root/src/corelib/serialization/qcborarray.h
diff options
context:
space:
mode:
authorEdward Welbourne <edward.welbourne@qt.io>2018-09-20 13:36:05 +0200
committerEdward Welbourne <edward.welbourne@qt.io>2018-10-08 14:11:08 +0000
commitff7f09d18708119bebb94202d3a3dcb26149ee5a (patch)
treeaa15d57cd1fdb9eed9776db38360ab0b4e59cb64 /src/corelib/serialization/qcborarray.h
parent7f079bf9d0f534fcec747f965565d99845df7aba (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.h7
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);