diff --git a/gdb-port/parser.py b/gdb-port/parser.py
index e6774d0a17a094b34582acce3486b2607dc9930e..bc5d24be33e326c45d027e752fa3b8819dc8e681 100644
--- a/gdb-port/parser.py
+++ b/gdb-port/parser.py
@@ -148,8 +148,10 @@ class ParserStack:
 			# TODO: where should commit_at_push() be called? HDoParseBreakpoint determines whether to stop, which ParserStack doesn't know about. could be a bool parameter to push()
 			if should_commit:
 				allocs = self.commit_at_push()
+				pending_allocs = self.pending_allocs.get(self.arena_int, {})
 				for addr, alloc in allocs.items():
-					self.pending_allocs[self.arena_int][addr] = self.pending_allocs[self.arena_int].get(addr, 0) + alloc
+					pending_allocs[addr] = pending_allocs.get(addr, 0) + alloc
+				self.pending_allocs[self.arena_int] = pending_allocs
 
 	def pop(self):
 		parser_obj = self.peek()
@@ -161,9 +163,11 @@ class ParserStack:
 			self.stack_events.append((StackEvent.POP, int(self.parse_state_gdbval['arena']['arena_malloc_bytes']), parser_obj))
 
 			allocs = self.commit_at_pop()
+			penting_allocs = self.pending_allocs.get(self.arena_int, {})
 			# TODO: where do we commit unclaimed allocs in a parserstack?
 			for addr, alloc in allocs.items():
-				self.pending_allocs[self.arena_int][addr] = self.pending_allocs[self.arena_int].get(addr, 0) + alloc
+				pending_allocs[addr] = pending_allocs.get(addr, 0) + alloc
+			self.pending_allocs[self.arena_int] = pending_allocs
 			#print("adding mem use: parser:", str(parser_obj), "arena:", hex(int(self.arena)), "bytes:", allocated_bytes) # DEBUG
 			#print("adding mem use (alternate): parser:", str(parser_obj), "arena:", hex(int(self.arena)), "bytes:", allocs) # DEBUG
 			#parser_obj.add_mem_use(int(self.arena), allocs)
@@ -314,9 +318,9 @@ class ParserStack:
 
 		#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)
-			parser_cache[parser_addr].add_mem_use(self.arena_int, alloc)
+		#for parser_addr, alloc in pop_allocs.items():
+			##top_level_parse.parser_by_address(parser_addr).add_mem_use(int(self.arena), alloc)
+			#parser_cache[parser_addr].add_mem_use(self.arena_int, alloc)
 		self.committed = len(self.stack_events)-1
 		return pop_allocs