diff --git a/src/libs/cplusplus/BackwardsScanner.cpp b/src/libs/cplusplus/BackwardsScanner.cpp
index da12f3e599a2b6f039a6fdcc1479a9900d71045c..7f1f6cdfe6b9d816a656346e760b6d2ae5ae4c6f 100644
--- a/src/libs/cplusplus/BackwardsScanner.cpp
+++ b/src/libs/cplusplus/BackwardsScanner.cpp
@@ -131,6 +131,11 @@ int BackwardsScanner::previousBlockState(const QTextBlock &block) const
     return 0;
 }
 
+int BackwardsScanner::size() const
+{
+    return _tokens.size();
+}
+
 int BackwardsScanner::startOfMatchingBrace(int index) const
 {
     const BackwardsScanner &tk = *this;
diff --git a/src/libs/cplusplus/BackwardsScanner.h b/src/libs/cplusplus/BackwardsScanner.h
index b2e7414951e12d62d9d32d3dd5d0b08c2d0e1fae..d991906fc55703f0bb18aee92a7fad3dfbc6af84 100644
--- a/src/libs/cplusplus/BackwardsScanner.h
+++ b/src/libs/cplusplus/BackwardsScanner.h
@@ -69,6 +69,8 @@ public:
 
     int previousBlockState(const QTextBlock &block) const;
 
+    int size() const;
+
 private:
     const SimpleToken &fetchToken(int i);
 
diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index 7260569dbb7bef336e0fc8c48df2cabfea4b03e6..dcec76f36735a6532bb6267b303f73be42c823fd 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -1579,7 +1579,8 @@ void CPPEditor::indentBlock(QTextDocument *doc, QTextBlock block, QChar typedCha
             tabSettings().indentLine(block, indent);
             return;
         } else if ((firstToken.is(T_PUBLIC) || firstToken.is(T_PROTECTED) || firstToken.is(T_PRIVATE) ||
-                    firstToken.is(T_Q_SIGNALS) || firstToken.is(T_Q_SLOTS)) && tk[1].is(T_COLON)) {
+                    firstToken.is(T_Q_SIGNALS) || firstToken.is(T_Q_SLOTS)) &&
+                    tk.size() > 1 && tk[1].is(T_COLON)) {
             const int startOfBlock = tk.startOfBlock(0);
             if (startOfBlock != 0) {
                 const int indent = tk.indentation(startOfBlock);