From: Tom Tromey Date: Thu, 30 May 2013 17:36:29 +0000 (+0000) Subject: fix cli-script.c X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ac5007fd4ee52830df95bef29e4ad6a4a33d0e48;p=binutils-gdb.git fix cli-script.c read_command_lines_1 had some (IMNSHO) spaghetti-ish code for cleanup handling. This makes the code much simpler to understand, by introducing an outer cleanup. This is another case where a stylistic change for the checker is also nice for the reader. * cli/cli-script.c (read_command_lines_1): Use a null cleanup for 'old_chain'. Do not check 'head' before processing cleanups. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5c999c08796..14b51d93a49 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 43fd4796d6f..d35f42fc46b 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; }