diff options
Diffstat (limited to 'src/parsers/generic.cpp')
-rw-r--r-- | src/parsers/generic.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/parsers/generic.cpp b/src/parsers/generic.cpp index ed00197..5f53843 100644 --- a/src/parsers/generic.cpp +++ b/src/parsers/generic.cpp @@ -19,12 +19,16 @@ #include "parsers/generic.h" +#include "command.h" + #include "includes/nodeincludes.h" #include "includes/parserincludes.h" #include "includes/parserdefines.inc" #include "localconsts.h" +int allocations = 0; + namespace Generic { @@ -100,6 +104,8 @@ Node *createParseNode(Node *parent, node->nodeType.c_str(), tag.c_str()); } + if (!parent) + delete node; return nullptr; } @@ -123,6 +129,15 @@ Node *parseNodes(tree gccNode) return createParseNode(nullptr, gccNode, FUNCTION_DECL); } +void cleanAllNodes(Node *node) +{ + if (command == Command::MemoryUsage) + Log::error("Allocations before cleanup: %d", allocations); + cleanNodes(node); + if (command == Command::MemoryUsage) + Log::error("Allocations after cleanup: %d", allocations); +} + void cleanNodes(Node *node) { FOR_EACH (std::vector<Node*>::iterator, it, node->childs) |