From 3a4a1cd00493e6df57c6d04dd256c85df36f5e15 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Tue, 11 Aug 2009 20:36:48 +0000 Subject: * dwarf2loc.c (dwarf2_evaluate_loc_desc): Make a cleanup. (dwarf2_loc_desc_needs_frame): Likewise. * dwarf2expr.h (make_cleanup_free_dwarf_expr_context): Declare. * dwarf2expr.c (free_dwarf_expr_context_cleanup): New function. (make_cleanup_free_dwarf_expr_context): Likewise. * dwarf2-frame.c (execute_stack_op): Make a cleanup. --- gdb/dwarf2-frame.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'gdb/dwarf2-frame.c') diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c index 0f6da4052b4..427f58f5cd4 100644 --- a/gdb/dwarf2-frame.c +++ b/gdb/dwarf2-frame.c @@ -352,8 +352,11 @@ execute_stack_op (gdb_byte *exp, ULONGEST len, int addr_size, { struct dwarf_expr_context *ctx; CORE_ADDR result; + struct cleanup *old_chain; ctx = new_dwarf_expr_context (); + old_chain = make_cleanup_free_dwarf_expr_context (ctx); + ctx->gdbarch = get_frame_arch (this_frame); ctx->addr_size = addr_size; ctx->baton = this_frame; @@ -369,7 +372,7 @@ execute_stack_op (gdb_byte *exp, ULONGEST len, int addr_size, if (ctx->in_reg) result = read_reg (this_frame, result); - free_dwarf_expr_context (ctx); + do_cleanups (old_chain); return result; } -- cgit v1.2.1