diff --git a/src/plugins/cppeditor/cppchecksymbols.cpp b/src/plugins/cppeditor/cppchecksymbols.cpp
index 674bedd4bcdb414971fc2338068ae3e0ae999046..638a091bdf01aace55324750b445da0221a2c061 100644
--- a/src/plugins/cppeditor/cppchecksymbols.cpp
+++ b/src/plugins/cppeditor/cppchecksymbols.cpp
@@ -662,7 +662,9 @@ bool CheckSymbols::visit(MemInitializerAST *ast)
 
 bool CheckSymbols::visit(FunctionDefinitionAST *ast)
 {
+    AST *thisFunction = _astStack.takeLast();
     accept(ast->decl_specifier_list);
+    _astStack.append(thisFunction);
 
     if (ast->declarator && ast->symbol && ! ast->symbol->isGenerated()) {
         Function *fun = ast->symbol;