2004-02-25 Andrew Cagney <cagney@redhat.com>
PR cli/1566. Problem found, and fix suggested by David Allan. * cli/cli-script.c (execute_control_command): Unconditionally install a cleanup. Default "ret" to "invalid_control". Use "break" instead of "return" to escape from the switch.
This commit is contained in:
parent
19b846f3d9
commit
4d2acc6562
2 changed files with 20 additions and 10 deletions
|
@ -1,3 +1,10 @@
|
|||
2004-02-25 Andrew Cagney <cagney@redhat.com>
|
||||
|
||||
PR cli/1566. Problem found, and fix suggested by David Allan.
|
||||
* cli/cli-script.c (execute_control_command): Unconditionally
|
||||
install a cleanup. Default "ret" to "invalid_control". Use
|
||||
"break" instead of "return" to escape from the switch.
|
||||
|
||||
2004-02-24 J. Brobecker <brobecker@gnat.com>
|
||||
|
||||
* tui/tui-disasm.c: %s/lines/asm_lines/g to avoid a collision
|
||||
|
|
|
@ -294,21 +294,25 @@ execute_control_command (struct command_line *cmd)
|
|||
{
|
||||
struct expression *expr;
|
||||
struct command_line *current;
|
||||
struct cleanup *old_chain = 0;
|
||||
struct cleanup *old_chain = make_cleanup (null_cleanup, 0);
|
||||
struct value *val;
|
||||
struct value *val_mark;
|
||||
int loop;
|
||||
enum command_control_type ret;
|
||||
char *new_line;
|
||||
|
||||
/* Start by assuming failure, if a problem is detected, the code
|
||||
below will simply "break" out of the switch. */
|
||||
ret = invalid_control;
|
||||
|
||||
switch (cmd->control_type)
|
||||
{
|
||||
case simple_control:
|
||||
/* A simple command, execute it and return. */
|
||||
new_line = insert_args (cmd->line);
|
||||
if (!new_line)
|
||||
return invalid_control;
|
||||
old_chain = make_cleanup (free_current_contents, &new_line);
|
||||
break;
|
||||
make_cleanup (free_current_contents, &new_line);
|
||||
execute_command (new_line, 0);
|
||||
ret = cmd->control_type;
|
||||
break;
|
||||
|
@ -325,8 +329,8 @@ execute_control_command (struct command_line *cmd)
|
|||
/* Parse the loop control expression for the while statement. */
|
||||
new_line = insert_args (cmd->line);
|
||||
if (!new_line)
|
||||
return invalid_control;
|
||||
old_chain = make_cleanup (free_current_contents, &new_line);
|
||||
break;
|
||||
make_cleanup (free_current_contents, &new_line);
|
||||
expr = parse_expression (new_line);
|
||||
make_cleanup (free_current_contents, &expr);
|
||||
|
||||
|
@ -385,8 +389,8 @@ execute_control_command (struct command_line *cmd)
|
|||
{
|
||||
new_line = insert_args (cmd->line);
|
||||
if (!new_line)
|
||||
return invalid_control;
|
||||
old_chain = make_cleanup (free_current_contents, &new_line);
|
||||
break;
|
||||
make_cleanup (free_current_contents, &new_line);
|
||||
/* Parse the conditional for the if statement. */
|
||||
expr = parse_expression (new_line);
|
||||
make_cleanup (free_current_contents, &expr);
|
||||
|
@ -424,11 +428,10 @@ execute_control_command (struct command_line *cmd)
|
|||
|
||||
default:
|
||||
warning ("Invalid control type in command structure.");
|
||||
return invalid_control;
|
||||
break;
|
||||
}
|
||||
|
||||
if (old_chain)
|
||||
do_cleanups (old_chain);
|
||||
do_cleanups (old_chain);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue