diff options
| author | Alex Trotsenko <alex1973tr@gmail.com> | 2015-05-08 16:17:00 +0300 |
|---|---|---|
| committer | Alex Trotsenko <alex1973tr@gmail.com> | 2015-05-11 07:32:40 +0000 |
| commit | ada8f1985d1f04440fca97894192748d98e47441 (patch) | |
| tree | 208e0bb8e815feb809be5615e1a3fb21f18e3382 /src | |
| parent | bf06924f3ffd22747c93a720caa501d8478dcbe6 (diff) | |
Check the maximum size of a QByteArray more precisely
Also document that the QByteArrray::MaxSize takes a trailing '\0' into
account.
Change-Id: I89e9a0d1a80a49b33efbac16ff7aa2a98f0e5670
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/corelib/io/qiodevice.cpp | 4 | ||||
| -rw-r--r-- | src/corelib/tools/qbytearray.cpp | 7 |
2 files changed, 6 insertions, 5 deletions
diff --git a/src/corelib/io/qiodevice.cpp b/src/corelib/io/qiodevice.cpp index e73a200fb4c..d68f33287d7 100644 --- a/src/corelib/io/qiodevice.cpp +++ b/src/corelib/io/qiodevice.cpp @@ -989,7 +989,7 @@ QByteArray QIODevice::readAll() // Size is unknown, read incrementally. qint64 readResult; do { - if (quint64(readBytes) + QIODEVICE_BUFFERSIZE > QByteArray::MaxSize) { + if (quint64(readBytes) + QIODEVICE_BUFFERSIZE >= QByteArray::MaxSize) { // If resize would fail, don't read more, return what we have. break; } @@ -1001,7 +1001,7 @@ QByteArray QIODevice::readAll() } else { // Read it all in one go. // If resize fails, don't read anything. - if (quint64(readBytes + theSize - d->pos) > QByteArray::MaxSize) + if (quint64(readBytes + theSize - d->pos) >= QByteArray::MaxSize) return QByteArray(); result.resize(int(readBytes + theSize - d->pos)); readBytes += read(result.data() + readBytes, result.size() - readBytes); diff --git a/src/corelib/tools/qbytearray.cpp b/src/corelib/tools/qbytearray.cpp index da5d00311ab..36c1f429952 100644 --- a/src/corelib/tools/qbytearray.cpp +++ b/src/corelib/tools/qbytearray.cpp @@ -124,7 +124,7 @@ int qFindByteArray( int qAllocMore(int alloc, int extra) Q_DECL_NOTHROW { Q_ASSERT(alloc >= 0 && extra >= 0); - Q_ASSERT_X(uint(alloc) < QByteArray::MaxSize, "qAllocMore", "Requested size is too large!"); + Q_ASSERT_X(uint(alloc) <= QByteArray::MaxSize, "qAllocMore", "Requested size is too large!"); unsigned nalloc = qNextPowerOfTwo(alloc + extra); @@ -842,8 +842,9 @@ static inline char qToLower(char c) \internal \since 5.4 - The maximum size of a QByteArray, in bytes. Also applies to a the maximum - storage size of QString and QVector, though not the number of elements. + The maximum size of a QByteArray (including a '\0' terminator), in bytes. + Also applies to the maximum storage size of QString and QVector, though + not the number of elements. */ /*! |
