diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 881e614575..2b6bfd2522 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2008-04-17 Marc Khouzam + + * breakpoint.c (update_watchpoint): Always reparse + condition. + 2008-04-17 Joel Brobecker * breakpoint.c (print_one_breakpoint_location): Make sure to print diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 20849c0754..0c977923fc 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -994,14 +994,13 @@ update_watchpoint (struct breakpoint *b, int reparse) value_free (v); } - if (reparse && b->cond_string != NULL) + /* We just regenerated the list of breakpoint locations. + The new location does not have its condition field set to anything + and therefore, we must always reparse the cond_string, independently + of the value of the reparse flag. */ + if (b->cond_string != NULL) { char *s = b->cond_string; - if (b->loc->cond) - { - xfree (b->loc->cond); - b->loc->cond = NULL; - } b->loc->cond = parse_exp_1 (&s, b->exp_valid_block, 0); } }