aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilippe Waroquiers <philippe.waroquiers@skynet.be>2018-08-02 23:13:22 +0200
committerPhilippe Waroquiers <philippe.waroquiers@skynet.be>2018-08-28 22:40:59 +0200
commit999700cd99a227bd6848e95cdc99117b2185e84c (patch)
treeafd748493f4e381cef66407523550d782bfa458a
parent5fe3f3e4633df1ea76ff24a2732d7c73dc983b90 (diff)
downloadgdb-999700cd99a227bd6848e95cdc99117b2185e84c.zip
gdb-999700cd99a227bd6848e95cdc99117b2185e84c.tar.gz
gdb-999700cd99a227bd6848e95cdc99117b2185e84c.tar.bz2
Fix regression for multi breakpoints command line clearing.
breakpoint.c is modified to fix the regression introduced when clearing the commands of several breakpoints by giving an empty list of commands, by just typing "end". GDB should read an empty list of command once, but it reads it for each breakpoint, as an empty list of command is NULL, and NULL is interpreted as 'not having read the command list yet'. The fix consists in having a boolean set to true once the command list has been read. gdb/ChangeLog 2018-08-26 Philippe Waroquiers <philippe.waroquiers@skynet.be> * breakpoint.c (commands_command_1): New boolean cmd_read to detect cmd was already read.
-rw-r--r--gdb/breakpoint.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 8f0feaa..4e7dac5 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -1219,6 +1219,10 @@ commands_command_1 (const char *arg, int from_tty,
struct command_line *control)
{
counted_command_line cmd;
+ /* cmd_read will be true once we have read cmd. Note that cmd might still be
+ NULL after the call to read_command_lines if the user provides an empty
+ list of command by just typing "end". */
+ bool cmd_read = false;
std::string new_arg;
@@ -1235,8 +1239,9 @@ commands_command_1 (const char *arg, int from_tty,
map_breakpoint_numbers
(arg, [&] (breakpoint *b)
{
- if (cmd == NULL)
+ if (!cmd_read)
{
+ gdb_assert (cmd == NULL);
if (control != NULL)
cmd = control->body_list_0;
else
@@ -1256,6 +1261,7 @@ commands_command_1 (const char *arg, int from_tty,
cmd = read_command_lines (str.c_str (), from_tty, 1, validator);
}
+ cmd_read = true;
}
/* If a breakpoint was on the list more than once, we don't need to