diff --git a/src/libs/3rdparty/cplusplus/Lexer.cpp b/src/libs/3rdparty/cplusplus/Lexer.cpp
index 215465574954aec0e44d0090fae84845a725069b..18f68047b85a0a64e5c3af3d206cc1b10aacd137 100644
--- a/src/libs/3rdparty/cplusplus/Lexer.cpp
+++ b/src/libs/3rdparty/cplusplus/Lexer.cpp
@@ -29,6 +29,7 @@ using namespace CPlusPlus;
 
 Lexer::Lexer(TranslationUnit *unit)
     : _translationUnit(unit),
+      _control(unit->control()),
       _state(State_Default),
       _flags(0),
       _currentLine(1)
@@ -40,6 +41,7 @@ Lexer::Lexer(TranslationUnit *unit)
 
 Lexer::Lexer(const char *firstChar, const char *lastChar)
     : _translationUnit(0),
+      _control(0),
       _state(State_Default),
       _flags(0),
       _currentLine(1)
@@ -54,14 +56,6 @@ Lexer::~Lexer()
 TranslationUnit *Lexer::translationUnit() const
 { return _translationUnit; }
 
-Control *Lexer::control() const
-{
-    if (_translationUnit)
-        return _translationUnit->control();
-
-    return 0;
-}
-
 void Lexer::setSource(const char *firstChar, const char *lastChar)
 {
     _firstChar = firstChar;
diff --git a/src/libs/3rdparty/cplusplus/Lexer.h b/src/libs/3rdparty/cplusplus/Lexer.h
index e2e39ed4807da1a758c0dce3f9c02df2110ecd86..2484b476a327adace3d1802639f31dcd6487392f 100644
--- a/src/libs/3rdparty/cplusplus/Lexer.h
+++ b/src/libs/3rdparty/cplusplus/Lexer.h
@@ -43,7 +43,7 @@ public:
     Lexer(const char *firstChar, const char *lastChar);
     ~Lexer();
 
-    Control *control() const;
+    Control *control() const { return _control; }
     TranslationUnit *translationUnit() const;
 
     bool qtMocRunEnabled() const;
@@ -118,6 +118,7 @@ private:
     };
 
     TranslationUnit *_translationUnit;
+    Control *_control;
     const char *_firstChar;
     const char *_currentChar;
     const char *_lastChar;