aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/texteditor/textdocumentlayout.h
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2023-04-05 12:48:19 +0200
committerDavid Schulz <david.schulz@qt.io>2023-04-13 06:09:10 +0000
commitf773c09f33a81880ea38199b5fe49d6ba67b8b69 (patch)
tree0916c0f26cbfc32681b9b5b475568cf344bb9766 /src/plugins/texteditor/textdocumentlayout.h
parent78cf563142efe442796ff74d332c1d96024d1fde (diff)
TextEditor: fix crash on reload
Since TextDocument::openImpl potentially processes events it could delete TextMarks. So tracking them in TextDocument::reload can be considered unsafe. Track them in TextDocumentLayout instead and remove the tracked mark if it gets deleted while reloading the document. Task-number: QTCREATORBUG-29004 Change-Id: I9d0478e9c763b49f145c1bbaeed1a0b602757014 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Diffstat (limited to 'src/plugins/texteditor/textdocumentlayout.h')
-rw-r--r--src/plugins/texteditor/textdocumentlayout.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/plugins/texteditor/textdocumentlayout.h b/src/plugins/texteditor/textdocumentlayout.h
index 19278ad93c..d6f847e481 100644
--- a/src/plugins/texteditor/textdocumentlayout.h
+++ b/src/plugins/texteditor/textdocumentlayout.h
@@ -245,7 +245,8 @@ public:
QRectF blockBoundingRect(const QTextBlock &block) const override;
TextMarks documentClosing();
- void documentReloaded(TextMarks marks, TextDocument *baseextDocument);
+ void documentAboutToReload();
+ void documentReloaded(TextDocument *baseextDocument);
void updateMarksLineNumber();
void updateMarksBlock(const QTextBlock &block);
void scheduleUpdate();
@@ -253,6 +254,8 @@ public:
private:
bool m_updateScheduled = false;
+ TextMarks m_reloadMarks;
+ void resetReloadMarks();
signals:
void updateExtraArea();