2004-01-27 Paul N. Hilfinger <hilfinger@gnat.com>
* breakpoint.c (breakpoint_re_set_one): Set b->cond, b->val, and b->exp to NULL after freeing so that error during re-parsing or evaluation of expressions associated with breakpoint don't eventually lead to re-freeing of storage. Committed by Andrew Cagney.
This commit is contained in:
parent
17707c23a8
commit
a355c7de35
2 changed files with 26 additions and 3 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2004-01-27 Paul N. Hilfinger <hilfinger@gnat.com>
|
||||||
|
|
||||||
|
* breakpoint.c (breakpoint_re_set_one): Set b->cond, b->val, and
|
||||||
|
b->exp to NULL after freeing so that error during re-parsing or
|
||||||
|
evaluation of expressions associated with breakpoint don't
|
||||||
|
eventually lead to re-freeing of storage.
|
||||||
|
Committed by Andrew Cagney.
|
||||||
|
|
||||||
2004-01-27 Andrew Cagney <cagney@redhat.com>
|
2004-01-27 Andrew Cagney <cagney@redhat.com>
|
||||||
|
|
||||||
* source.c (ambiguous_line_spec): Delete undefined declaration.
|
* source.c (ambiguous_line_spec): Delete undefined declaration.
|
||||||
|
|
|
@ -6970,12 +6970,22 @@ breakpoint_re_set_one (void *bint)
|
||||||
|
|
||||||
/* So for now, just use a global context. */
|
/* So for now, just use a global context. */
|
||||||
if (b->exp)
|
if (b->exp)
|
||||||
xfree (b->exp);
|
{
|
||||||
|
xfree (b->exp);
|
||||||
|
/* Avoid re-freeing b->exp if an error during the call to
|
||||||
|
parse_expression. */
|
||||||
|
b->exp = NULL;
|
||||||
|
}
|
||||||
b->exp = parse_expression (b->exp_string);
|
b->exp = parse_expression (b->exp_string);
|
||||||
b->exp_valid_block = innermost_block;
|
b->exp_valid_block = innermost_block;
|
||||||
mark = value_mark ();
|
mark = value_mark ();
|
||||||
if (b->val)
|
if (b->val)
|
||||||
value_free (b->val);
|
{
|
||||||
|
value_free (b->val);
|
||||||
|
/* Avoid re-freeing b->val if an error during the call to
|
||||||
|
evaluate_expression. */
|
||||||
|
b->val = NULL;
|
||||||
|
}
|
||||||
b->val = evaluate_expression (b->exp);
|
b->val = evaluate_expression (b->exp);
|
||||||
release_value (b->val);
|
release_value (b->val);
|
||||||
if (VALUE_LAZY (b->val) && breakpoint_enabled (b))
|
if (VALUE_LAZY (b->val) && breakpoint_enabled (b))
|
||||||
|
@ -6985,7 +6995,12 @@ breakpoint_re_set_one (void *bint)
|
||||||
{
|
{
|
||||||
s = b->cond_string;
|
s = b->cond_string;
|
||||||
if (b->cond)
|
if (b->cond)
|
||||||
xfree (b->cond);
|
{
|
||||||
|
xfree (b->cond);
|
||||||
|
/* Avoid re-freeing b->exp if an error during the call
|
||||||
|
to parse_exp_1. */
|
||||||
|
b->cond = NULL;
|
||||||
|
}
|
||||||
b->cond = parse_exp_1 (&s, (struct block *) 0, 0);
|
b->cond = parse_exp_1 (&s, (struct block *) 0, 0);
|
||||||
}
|
}
|
||||||
if (breakpoint_enabled (b))
|
if (breakpoint_enabled (b))
|
||||||
|
|
Loading…
Add table
Reference in a new issue