diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp
index 3041fd827e3874d9a53d9ad4b71154d1348a6dba..473086f08c0afae02c301a19f986ff71a95d0ffc 100644
--- a/src/libs/cplusplus/pp-engine.cpp
+++ b/src/libs/cplusplus/pp-engine.cpp
@@ -664,6 +664,20 @@ Preprocessor::State Preprocessor::createStateFromSource(const QByteArray &source
 
 void Preprocessor::processNewline(bool force)
 {
+    if (_dot != _tokens.constBegin()) {
+        TokenIterator prevTok = _dot - 1;
+
+        if (prevTok->isLiteral()) {
+            const char *ptr = _source.constBegin() + prevTok->begin();
+            const char *end = ptr + prevTok->length();
+
+            for (; ptr != end; ++ptr) {
+                if (*ptr == '\n')
+                    ++env->currentLine;
+            }
+        }
+    }
+
     if (! force && env->currentLine == _dot->lineno)
         return;