Fix ubsan errors
Nullptr memcpy, memmove and 36 bit shift of integer. Change-Id: Ib79c8a98a710d021fc93b6aaec6c0ba9bde5f91e Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
e4fece60aa
commit
0c07f0cab8
@ -2285,7 +2285,7 @@ QByteArray QByteArray::repeated(qsizetype times) const
|
||||
|
||||
#define REHASH(a) \
|
||||
if (ol_minus_1 < sizeof(std::size_t) * CHAR_BIT) \
|
||||
hashHaystack -= (a) << ol_minus_1; \
|
||||
hashHaystack -= std::size_t(a) << ol_minus_1; \
|
||||
hashHaystack <<= 1
|
||||
|
||||
static inline qsizetype findCharHelper(QByteArrayView haystack, qsizetype from, char needle) noexcept
|
||||
|
@ -1367,6 +1367,8 @@ public:
|
||||
Q_ASSERT(!this->isShared() || b == e);
|
||||
Q_ASSERT(b <= e);
|
||||
Q_ASSERT(size_t(e - b) <= this->allocatedCapacity() - this->size);
|
||||
if (b == e) // short-cut and handling the case b and e == nullptr
|
||||
return;
|
||||
|
||||
prepareSpaceForAppend(b, e, e - b); // ### perf. loss
|
||||
Base::insert(GrowsForwardTag{}, this->end(), b, e);
|
||||
@ -1397,6 +1399,8 @@ public:
|
||||
Q_ASSERT(!this->isShared() || b == e);
|
||||
Q_ASSERT(b <= e);
|
||||
Q_ASSERT(size_t(e - b) <= this->allocatedCapacity() - this->size);
|
||||
if (b == e) // short-cut and handling the case b and e == nullptr
|
||||
return;
|
||||
|
||||
prepareSpaceForAppend(b, e, e - b); // ### perf. loss
|
||||
Base::moveAppend(b, e);
|
||||
@ -1421,6 +1425,8 @@ public:
|
||||
Q_ASSERT(b <= e);
|
||||
Q_ASSERT(e <= where || b > this->end() || where == this->end()); // No overlap or append
|
||||
Q_ASSERT(size_t(e - b) <= this->allocatedCapacity() - this->size);
|
||||
if (b == e) // short-cut and handling the case b and e == nullptr
|
||||
return;
|
||||
|
||||
if (this->size > 0 && where == this->begin()) { // prepend case - special space arrangement
|
||||
prepareSpaceForPrepend(b, e, e - b); // ### perf. loss
|
||||
|
Loading…
Reference in New Issue
Block a user