forked from qt-creator/qt-creator
Fix crash after move to QStringView
With Qt 5. Fix the bounds checking for midView by copying the complete logic from Qt QContainerImplHelper::mid. Fixes: QDS-2806 Task-number: QTCREATORBUG-24098 Change-Id: I0d7d414c159f81a76114b67f55aefbb81f17b034 Reviewed-by: Henning Gründl <henning.gruendl@qt.io> Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -66,9 +66,16 @@ inline StringView make_stringview(const QString &s)
|
|||||||
inline QStringView midView(const QString &s, int offset, int length)
|
inline QStringView midView(const QString &s, int offset, int length)
|
||||||
{
|
{
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||||
if (offset > s.size())
|
const int size = s.size();
|
||||||
|
if (offset > size)
|
||||||
return {};
|
return {};
|
||||||
if (offset + length > s.size())
|
if (offset < 0) {
|
||||||
|
if (length < 0 || length + offset >= size)
|
||||||
|
return QStringView(s);
|
||||||
|
if (length + offset <= 0)
|
||||||
|
return {};
|
||||||
|
return QStringView(s).left(length + offset);
|
||||||
|
} else if (length > size - offset)
|
||||||
return QStringView(s).mid(offset);
|
return QStringView(s).mid(offset);
|
||||||
return QStringView(s).mid(offset, length);
|
return QStringView(s).mid(offset, length);
|
||||||
#else
|
#else
|
||||||
|
Reference in New Issue
Block a user