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:
Eike Ziller
2020-09-18 10:53:23 +02:00
parent 7363ec8b66
commit f18d24efaa

View File

@@ -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