diff --git a/gdb-port/top-level-parse.py b/gdb-port/top-level-parse.py index 9339cc0a904c85e4558e47ce7d979f3ec6d2db8b..77df431c623179b7ee2a20958731b141cac3abe4 100644 --- a/gdb-port/top-level-parse.py +++ b/gdb-port/top-level-parse.py @@ -84,6 +84,9 @@ class TopLevelParse: def return_from_h_do_parse(self, parse_state, parser, ret_val): parser_stack = self.peek_parserstack() parser_obj = self.parser_by_address(parser) # We don't try to make a new Parser() object here, because it has to have been done in the corresponding enter_h_do_parse() call + previous_parser = parser_stack.pop() + top_of_stack = parser_stack.peek() + assert top_of_stack == parser_obj, "parser function argument is different from parser on top of stack" # The rationale for handling the "current" parser separately from stack: # Parsers are only pushed on the stack in perform_lowlevel_parse, which doesn't get called when h_do_parse() gets the result from cache. # If other backends are supported, this might change to pushing/popping the stack in h_do_parse() @@ -136,9 +139,9 @@ class TopLevelParse: return parser_obj def return_from_perform_lowlevel_parse(self): - parser_stack = self.peek_parserstack() - parser_obj = parser_stack.pop() - # debug print here + #parser_stack = self.peek_parserstack() + #parser_obj = parser_stack.pop() + pass def enter_h_arena_malloc_raw(self, alloc_size): parser_obj = self.peek_parser()