From 581edb82fd0f103a3e70720145fc15a0cccb0aaf Mon Sep 17 00:00:00 2001
From: pompolic <pompolic@special-circumstanc.es>
Date: Tue, 9 May 2023 23:04:29 +0200
Subject: [PATCH] Aggregate allocs per parser in ParserStack.pop()

---
 gdb-port/parser.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/gdb-port/parser.py b/gdb-port/parser.py
index 7154457..0a4ef87 100644
--- a/gdb-port/parser.py
+++ b/gdb-port/parser.py
@@ -294,10 +294,13 @@ class ParserStack:
 				assert event != current_event
 				#print("commit_at_pop: alloc:", alloc) # DEBUG
 				#print("commit_at_pop: adding to parser", event[2].name, hex(event[2].address))
-				event[2].add_mem_use(int(self.arena), alloc)
+				#event[2].add_mem_use(int(self.arena), alloc)
 				pop_allocs[event[2].address] = pop_allocs.get(event[2].address, 0) + alloc
 
 		#print("commit_at_pop: pop_allocs:", pop_allocs) # DEBUG
+		self.unclaimed_mem_use += pop_allocs.pop(0,0) # Account for allocs and remove with no parser, so it doesn't cause problems in the loop below
+		for parser_addr, alloc in pop_allocs.items():
+			top_level_parse.parser_by_address(parser_addr).add_mem_use(int(self.arena), alloc)
 		self.committed = len(self.stack_events)-1
 		return pop_allocs
 
-- 
GitLab