diff options
author | David Schulz <david.schulz@qt.io> | 2023-04-05 12:48:19 +0200 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2023-04-13 06:09:10 +0000 |
commit | f773c09f33a81880ea38199b5fe49d6ba67b8b69 (patch) | |
tree | 0916c0f26cbfc32681b9b5b475568cf344bb9766 /src/plugins/texteditor/textdocumentlayout.h | |
parent | 78cf563142efe442796ff74d332c1d96024d1fde (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.h | 5 |
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(); |