aboutsummaryrefslogtreecommitdiff
path: root/gdb/cli
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2013-05-30 17:36:29 +0000
committerTom Tromey <tromey@redhat.com>2013-05-30 17:36:29 +0000
commitac5007fd4ee52830df95bef29e4ad6a4a33d0e48 (patch)
treea17715269f78a2d3debfe21b73263e356ccfea22 /gdb/cli
parentcd82eddcf152515d67367cdca3fefdfe2aa31b7f (diff)
downloadgdb-ac5007fd4ee52830df95bef29e4ad6a4a33d0e48.zip
gdb-ac5007fd4ee52830df95bef29e4ad6a4a33d0e48.tar.gz
gdb-ac5007fd4ee52830df95bef29e4ad6a4a33d0e48.tar.bz2
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.
Diffstat (limited to 'gdb/cli')
-rw-r--r--gdb/cli/cli-script.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/gdb/cli/cli-script.c b/gdb/cli/cli-script.c
index 43fd479..d35f42f 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;
}