diff --git a/src/texthandler.cpp b/src/texthandler.cpp index 3a6bf507c..3083c19ff 100644 --- a/src/texthandler.cpp +++ b/src/texthandler.cpp @@ -219,8 +219,12 @@ void TextHandler::next() void TextHandler::nextTokenType() { - if (m_nextTokenType == Type::Tag && getTagType() == QStringLiteral("code") && !isCloseTag() - && m_dataBuffer.indexOf(QStringLiteral(""), m_pos) != m_pos) { + if (m_pos >= m_dataBuffer.length()) { + // This is to stop the function accessing an index outside the length of + // m_dataBuffer during the final loop. + m_nextTokenType = Type::End; + } else if (m_nextTokenType == Type::Tag && getTagType() == QStringLiteral("code") && !isCloseTag() + && m_dataBuffer.indexOf(QStringLiteral(""), m_pos) != m_pos) { m_nextTokenType = Type::TextCode; } else if (m_dataBuffer[m_pos] == u'<' && m_dataBuffer[m_pos + 1] != u' ') { m_nextTokenType = Type::Tag; diff --git a/src/texthandler.h b/src/texthandler.h index bfd70b9e2..7f260fbde 100644 --- a/src/texthandler.h +++ b/src/texthandler.h @@ -48,6 +48,7 @@ public: Text, /*!< Anything not a tag that doesn't have special handling */ Tag, /*!< For any generic tag that doesn't have special handling */ TextCode, /*!< Text between code tags */ + End, /*!< End of the input string */ }; /**