From cf4ded82d012113df559b446bf8532cfb700d11e Mon Sep 17 00:00:00 2001 From: Keith Seitz Date: Sat, 10 Nov 2012 20:25:56 +0000 Subject: [PATCH] * breakpoint.c (clear_command): Add cleanup for sals.sals if an argument is given. * linespec.c (parse_linespec): Do cleanups after parsing a convenience variable. --- gdb/ChangeLog | 8 ++++++++ gdb/breakpoint.c | 1 + gdb/linespec.c | 5 +---- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 4175f2ff7cb..91558cd97cc 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2012-11-10 Keith Seitz + + * breakpoint.c (clear_command): Add cleanup for + sals.sals if an argument is given. + + * linespec.c (parse_linespec): Do cleanups after + parsing a convenience variable. + 2012-11-10 Keith Seitz PR gdb/14288 diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index d47544bcf1d..ccf7ee1b7c4 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -11792,6 +11792,7 @@ clear_command (char *arg, int from_tty) sals = decode_line_with_current_source (arg, (DECODE_LINE_FUNFIRSTLINE | DECODE_LINE_LIST_MODE)); + make_cleanup (xfree, sals.sals); default_match = 0; } else diff --git a/gdb/linespec.c b/gdb/linespec.c index 06634d28394..e9918b1943a 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -2095,20 +2095,17 @@ parse_linespec (linespec_parser *parser, char **argptr) cleanup = make_cleanup (xfree, var); PARSER_RESULT (parser)->line_offset = linespec_parse_variable (PARSER_STATE (parser), var); + do_cleanups (cleanup); /* If a line_offset wasn't found (VAR is the name of a user variable/function), then skip to normal symbol processing. */ if (PARSER_RESULT (parser)->line_offset.sign != LINE_OFFSET_UNKNOWN) { - discard_cleanups (cleanup); - /* Consume this token. */ linespec_lexer_consume_token (parser); goto convert_to_sals; } - - do_cleanups (cleanup); } else if (token.type != LSTOKEN_STRING && token.type != LSTOKEN_NUMBER) unexpected_linespec_error (parser); -- 2.30.2