QDataBuffer: decrease size on shrink()

Having the size potentially be larger than the capacity can't
be considered anything other than a bug.

Pick-to: 6.5
Change-Id: Id059c0f2c7320f992d897011d7aa944c5cb86058
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
This commit is contained in:
Mårten Nordheim 2023-04-25 14:30:44 +02:00
parent 311f8157ae
commit 86a0e70d65

View File

@ -89,13 +89,16 @@ public:
} }
void shrink(qsizetype size) { void shrink(qsizetype size) {
Q_ASSERT(capacity >= size);
capacity = size; capacity = size;
if (size) { if (size) {
buffer = (Type*) realloc(static_cast<void*>(buffer), capacity * sizeof(Type)); buffer = (Type*) realloc(static_cast<void*>(buffer), capacity * sizeof(Type));
Q_CHECK_PTR(buffer); Q_CHECK_PTR(buffer);
siz = std::min(siz, size);
} else { } else {
free(buffer); free(buffer);
buffer = nullptr; buffer = nullptr;
siz = 0;
} }
} }