diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp
index 5ce662b9981af2aca9d19b8914bd7ef94fcc892b..1a6094601d7c1ea2d35895755eaffaee633cd855 100644
--- a/src/libs/cplusplus/pp-engine.cpp
+++ b/src/libs/cplusplus/pp-engine.cpp
@@ -545,6 +545,8 @@ Preprocessor::Preprocessor(Client *client, Environment *env)
     : client(client),
       env(env),
       _expand(env),
+      _skipping(MAX_LEVEL),
+      _true_test(MAX_LEVEL),
       _result(0),
       _markGeneratedTokens(false),
       _expandMacros(true)
diff --git a/src/libs/cplusplus/pp-engine.h b/src/libs/cplusplus/pp-engine.h
index 5203f7db0ea1fe2f074e9dbdc3d5e8ee81ca8d43..73594726403f2b7d718c5875d34e174f9e32ff45 100644
--- a/src/libs/cplusplus/pp-engine.h
+++ b/src/libs/cplusplus/pp-engine.h
@@ -54,6 +54,7 @@
 
 #include <Token.h>
 #include <QVector>
+#include <QBitArray>
 
 namespace CPlusPlus {
 
@@ -177,8 +178,8 @@ private:
     Environment *env;
     MacroExpander _expand;
 
-    bool _skipping[MAX_LEVEL]; // ### move in state
-    bool _true_test[MAX_LEVEL]; // ### move in state
+    QBitArray _skipping; // ### move in state
+    QBitArray _true_test; // ### move in state
     int iflevel; // ### move in state
 
     QList<State> _savedStates;