Don't crash on QVLA construction from an empty std::initializer_list
The C++ standard says in [support.initlist.access]/1: constexpr const E* begin() const noexcept; Returns: A pointer to the beginning of the array. If size() == 0 the values of begin() and end() are unspecified but they shall be identical. So we can't assume it's non-null. I didn't want to remove the Q_ASSERT, so passing a non-null pointer to append() remains required. This patch simply won't call append() if the initializer list is empty. This was already tested, but the failure is with a compiler that is not part of the Qt CI. Task-number: QTBUG-57277 Change-Id: Iaeecaffe26af4535b416fffd1489806872b412ee Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
This commit is contained in:
parent
2c9dc93696
commit
b0c321a8db
@ -76,7 +76,8 @@ public:
|
||||
QVarLengthArray(std::initializer_list<T> args)
|
||||
: a(Prealloc), s(0), ptr(reinterpret_cast<T *>(array))
|
||||
{
|
||||
append(args.begin(), args.size());
|
||||
if (args.size())
|
||||
append(args.begin(), args.size());
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user