diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5c999c0879..14b51d93a4 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2013-05-30 Tom Tromey + + * cli/cli-script.c (read_command_lines_1): Use a null cleanup + for 'old_chain'. Do not check 'head' before processing + cleanups. + 2013-05-30 Tom Tromey * mi/mi-cmd-stack.c (list_arg_or_local): Remove diff --git a/gdb/cli/cli-script.c b/gdb/cli/cli-script.c index 43fd4796d6..d35f42fc46 100644 --- a/gdb/cli/cli-script.c +++ b/gdb/cli/cli-script.c @@ -1246,13 +1246,12 @@ read_command_lines_1 (char * (*read_next_line_func) (void), int parse_commands, void (*validator)(char *, void *), void *closure) { struct command_line *head, *tail, *next; - struct cleanup *old_chain; + struct cleanup *old_chain = make_cleanup (null_cleanup, NULL); enum command_control_type ret; enum misc_command_type val; control_level = 0; head = tail = NULL; - old_chain = NULL; while (1) { @@ -1298,22 +1297,17 @@ read_command_lines_1 (char * (*read_next_line_func) (void), int parse_commands, else { head = next; - old_chain = make_cleanup_free_command_lines (&head); + make_cleanup_free_command_lines (&head); } tail = next; } dont_repeat (); - if (head) - { - if (ret != invalid_control) - { - discard_cleanups (old_chain); - } - else - do_cleanups (old_chain); - } + if (ret != invalid_control) + discard_cleanups (old_chain); + else + do_cleanups (old_chain); return head; }