* breakpoint.c (watchpoint_check): Double-check the found frame.

This commit is contained in:
Daniel Jacobowitz 2006-12-18 22:10:13 +00:00
parent e565971c4e
commit 69fbadd53d
2 changed files with 11 additions and 0 deletions

View file

@ -1,3 +1,7 @@
2006-12-18 Daniel Jacobowitz <dan@codesourcery.com>
* breakpoint.c (watchpoint_check): Double-check the found frame.
2006-12-17 Nick Hudson <skrll@netbsd.org> 2006-12-17 Nick Hudson <skrll@netbsd.org>
Mark Kettenis <kettenis@gnu.org> Mark Kettenis <kettenis@gnu.org>

View file

@ -2564,6 +2564,13 @@ watchpoint_check (void *p)
reinit_frame_cache (); reinit_frame_cache ();
fr = frame_find_by_id (b->watchpoint_frame); fr = frame_find_by_id (b->watchpoint_frame);
within_current_scope = (fr != NULL); within_current_scope = (fr != NULL);
/* If we've gotten confused in the unwinder, we might have
returned a frame that can't describe this variable. */
if (within_current_scope
&& block_function (b->exp_valid_block) != get_frame_function (fr))
within_current_scope = 0;
/* in_function_epilogue_p() returns a non-zero value if we're still /* in_function_epilogue_p() returns a non-zero value if we're still
in the function but the stack frame has already been invalidated. in the function but the stack frame has already been invalidated.
Since we can't rely on the values of local variables after the Since we can't rely on the values of local variables after the