diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index b16d5e87804ced34699c27da6000377c06a0d43e..beab82f54df013c8c2f3e1c0bbf31f9b8feebb36 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -1707,14 +1707,8 @@ void SemanticHighlighter::run()
     forever {
         m_mutex.lock();
 
-        forever {
-            if (m_done)
-                break;
-            else if (! m_source.fileName.isEmpty())
-                break;
-
+        while (! (m_done || ! m_source.fileName.isEmpty()))
             m_condition.wait(&m_mutex);
-        }
 
         const bool done = m_done;
         const Source source = m_source;