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.
This commit is contained in:
Tom Tromey 2013-05-30 17:36:29 +00:00
parent cd82eddcf1
commit ac5007fd4e
2 changed files with 12 additions and 12 deletions

View File

@ -1,3 +1,9 @@
2013-05-30 Tom Tromey <tromey@redhat.com>
* 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 <tromey@redhat.com> 2013-05-30 Tom Tromey <tromey@redhat.com>
* mi/mi-cmd-stack.c (list_arg_or_local): Remove * mi/mi-cmd-stack.c (list_arg_or_local): Remove

View File

@ -1246,13 +1246,12 @@ read_command_lines_1 (char * (*read_next_line_func) (void), int parse_commands,
void (*validator)(char *, void *), void *closure) void (*validator)(char *, void *), void *closure)
{ {
struct command_line *head, *tail, *next; 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 command_control_type ret;
enum misc_command_type val; enum misc_command_type val;
control_level = 0; control_level = 0;
head = tail = NULL; head = tail = NULL;
old_chain = NULL;
while (1) while (1)
{ {
@ -1298,22 +1297,17 @@ read_command_lines_1 (char * (*read_next_line_func) (void), int parse_commands,
else else
{ {
head = next; head = next;
old_chain = make_cleanup_free_command_lines (&head); make_cleanup_free_command_lines (&head);
} }
tail = next; tail = next;
} }
dont_repeat (); dont_repeat ();
if (head) if (ret != invalid_control)
{ discard_cleanups (old_chain);
if (ret != invalid_control) else
{ do_cleanups (old_chain);
discard_cleanups (old_chain);
}
else
do_cleanups (old_chain);
}
return head; return head;
} }