From 7f6d870d82699d58a4715db3a461ba7f4deaf785 Mon Sep 17 00:00:00 2001
From: pompolic <pompolic@special-circumstanc.es>
Date: Mon, 20 Sep 2021 18:43:56 +0200
Subject: [PATCH] Clean up some more .parse_and_eval()s

---
 gdb-port/parser-type-instrumentation-gdb.py | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/gdb-port/parser-type-instrumentation-gdb.py b/gdb-port/parser-type-instrumentation-gdb.py
index 6dc9b88..25dee8a 100644
--- a/gdb-port/parser-type-instrumentation-gdb.py
+++ b/gdb-port/parser-type-instrumentation-gdb.py
@@ -541,15 +541,16 @@ class PermutationEnv(HParserEnv):
 		super().__init__(parser, top_level_parse)
 		self.parser = parser
 		self.member_parsers = []
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 
 		#frame = gdb.selected_frame()
 		h_sequence_t = gdb.lookup_type("HSequence")
 		h_sequence_p_t = h_sequence_t.pointer()
 
 		# Get the parser object
-		parser_obj = gdb.parse_and_eval("*parser")
+		#parser_obj = gdb.parse_and_eval("*parser")
 		# Get parser_obj.env, cast it to HSequence *, then dereference
-		p_env = parser_obj['env'].cast(h_sequence_p_t).dereference()
+		p_env = parser_val['env'].cast(h_sequence_p_t).dereference()
 		# Get length of HSequence
 		num_parsers = p_env['len']
 		# Get the array of parsers in the sequence
@@ -611,15 +612,16 @@ class SequenceEnv(HParserEnv):
 		super().__init__(parser, top_level_parse)
 		self.parser = parser
 		self.member_parsers = []
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 
 		#frame = gdb.selected_frame()
 		h_sequence_t = gdb.lookup_type("HSequence")
 		h_sequence_p_t = h_sequence_t.pointer()
 
 		# Get the parser object
-		parser_obj = gdb.parse_and_eval("*parser")
+		#parser_obj = gdb.parse_and_eval("*parser")
 		# Get parser_obj.env, cast it to HSequence *, then dereference
-		p_env = parser_obj['env'].cast(h_sequence_p_t).dereference()
+		p_env = parser_val['env'].cast(h_sequence_p_t).dereference()
 		# Get length of HSequence
 		num_parsers = p_env['len']
 		# Get the array of parsers in the sequence
-- 
GitLab