diff --git a/src/libs/qmljs/parser/qmljsengine_p.cpp b/src/libs/qmljs/parser/qmljsengine_p.cpp index 29456b8156e..44f03a1a740 100644 --- a/src/libs/qmljs/parser/qmljsengine_p.cpp +++ b/src/libs/qmljs/parser/qmljsengine_p.cpp @@ -133,13 +133,14 @@ MemoryPool *Engine::pool() QStringView Engine::newStringRef(const QString &text) { - const int pos = _extraCode.length(); - _extraCode += text; - return Utils::midView(_extraCode, pos, text.length()); + _extraCode.append(text); + return QStringView{_extraCode.last()}; } QStringView Engine::newStringRef(const QChar *chars, int size) -{ return newStringRef(QString(chars, size)); } +{ + return newStringRef(QString(chars, size)); +} } // end of namespace QmlJS diff --git a/src/libs/qmljs/parser/qmljsengine_p.h b/src/libs/qmljs/parser/qmljsengine_p.h index acef6c015b6..a6e8ad272f9 100644 --- a/src/libs/qmljs/parser/qmljsengine_p.h +++ b/src/libs/qmljs/parser/qmljsengine_p.h @@ -37,14 +37,16 @@ // #include "qmljsglobal_p.h" -#include "qmljs/parser/qmljssourcelocation_p.h" #include "qmljs/parser/qmljsmemorypool_p.h" +#include "qmljs/parser/qmljssourcelocation_p.h" +#include + +#include #include #include -#include QT_QML_BEGIN_NAMESPACE namespace QmlJS { @@ -84,7 +86,7 @@ class QML_PARSER_EXPORT Engine Directives *_directives; MemoryPool _pool; QList _comments; - QString _extraCode; + QStringList _extraCode; QString _code; public: @@ -107,9 +109,7 @@ public: inline QStringView midRef(int position, int size) { - if (position + size > _code.size()) - return QStringView(_code).mid(position); - return QStringView(_code).mid(position, size); + return Utils::midView(_code, position, size); } QStringView newStringRef(const QString &s);