summaryrefslogtreecommitdiff
path: root/src/parsers/generic.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/parsers/generic.cpp')
-rw-r--r--src/parsers/generic.cpp15
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)