From c5e4d73431bd361de9e52537a7020f85f231d3d1 Mon Sep 17 00:00:00 2001 From: Ivan Donchevskii Date: Thu, 21 Feb 2019 12:13:46 +0100 Subject: [PATCH] ClangFormat: Fix crashes when new project is created Indenter is used by wizards so make sure it works. Change-Id: If26eae322e26bf2e32cb86acf45e7b3d33b67e98 Reviewed-by: Marco Bubke --- src/plugins/clangformat/clangformatbaseindenter.cpp | 6 ++++-- src/plugins/clangformat/clangformatindenter.cpp | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/plugins/clangformat/clangformatbaseindenter.cpp b/src/plugins/clangformat/clangformatbaseindenter.cpp index c295a8a650a..a53eb50adb2 100644 --- a/src/plugins/clangformat/clangformatbaseindenter.cpp +++ b/src/plugins/clangformat/clangformatbaseindenter.cpp @@ -357,8 +357,10 @@ TextEditor::Replacements ClangFormatBaseIndenter::replacements(QByteArray buffer adjustFormatStyleForLineBreak(style, replacementsToKeep); if (typedChar == QChar::Null) { if (replacementsToKeep == ReplacementsToKeep::IndentAndBefore) { - buffer.insert(utf8Offset - 1, " //"); - utf8Offset += 3; + if (utf8Offset > 0) { + buffer.insert(utf8Offset - 1, " //"); + utf8Offset += 3; + } utf8Length += forceIndentWithExtraText(buffer, cursorPositionInEditor < 0 ? endBlock diff --git a/src/plugins/clangformat/clangformatindenter.cpp b/src/plugins/clangformat/clangformatindenter.cpp index ef9dbf5d1ca..42cedb7b6c9 100644 --- a/src/plugins/clangformat/clangformatindenter.cpp +++ b/src/plugins/clangformat/clangformatindenter.cpp @@ -84,7 +84,10 @@ Utils::optional ClangFormatIndenter::tabSettings() const int ClangFormatIndenter::lastSaveRevision() const { - return qobject_cast(m_doc->documentLayout())->lastSaveRevision; + auto *layout = qobject_cast(m_doc->documentLayout()); + if (!layout) + return 0; + return layout->lastSaveRevision; } bool ClangFormatIndenter::formatOnSave() const