SyntaxHighlighter: Fix leaking

Change-Id: Icd9e6cb18facbcb28692db114b952e96a66e2836
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Artem Sokolovskii
2024-01-08 12:33:38 +01:00
parent 0618df9ea2
commit 03bce22663
3 changed files with 12 additions and 1 deletions

View File

@@ -9,8 +9,9 @@
#include <utils/algorithm.h>
#include <utils/qtcassert.h>
#include <QTextDocument>
#include <QPointer>
#include <QTextDocument>
#include <QThread>
#include <cmath>
@@ -197,6 +198,9 @@ void SyntaxHighlighterPrivate::reformatBlocks(int from, int charsRemoved, int ch
QList<SyntaxHighlighter::Result> vecRes;
while (block.isValid() && (block.position() < endPosition || forceHighlightOfNextBlock)) {
if (QThread::currentThread()->isInterruptionRequested())
break;
const int stateBeforeHighlight = block.userState();
reformatBlock(block, from, charsRemoved, charsAdded);

View File

@@ -266,6 +266,7 @@ ThreadedSyntaxHighlighterRunner::ThreadedSyntaxHighlighterRunner(SyntaxHighLight
ThreadedSyntaxHighlighterRunner::~ThreadedSyntaxHighlighterRunner()
{
m_thread.requestInterruption();
m_thread.quit();
m_thread.wait();
}

View File

@@ -62,6 +62,12 @@ public:
{
}
~TextDocumentPrivate()
{
if (m_highlighterRunner)
m_highlighterRunner->deleteLater();
}
MultiTextCursor indentOrUnindent(const MultiTextCursor &cursor, bool doIndent, const TabSettings &tabSettings);
void resetRevisions();
void updateRevisions();