* thread.c (restore_selected_frame): Handle frame_level == -1.

(make_cleanup_restore_current_thread): Use
	get_selected_frame_if_set.
	* frame.h (get_selected_frame_if_set): Declare.
	* frame.c (get_selected_frame_if_set): New function.
This commit is contained in:
Tom Tromey 2011-03-09 14:22:09 +00:00
parent eceb0c5f49
commit eb8c062170
4 changed files with 34 additions and 1 deletions

View file

@ -1019,6 +1019,13 @@ restore_selected_frame (struct frame_id a_frame_id, int frame_level)
struct frame_info *frame = NULL;
int count;
/* This means there was no selected frame. */
if (frame_level == -1)
{
select_frame (NULL);
return;
}
gdb_assert (frame_level >= 0);
/* Restore by level first, check if the frame id is the same as
@ -1137,7 +1144,14 @@ make_cleanup_restore_current_thread (void)
&& target_has_registers
&& target_has_stack
&& target_has_memory)
frame = get_selected_frame (NULL);
{
/* When processing internal events, there might not be a
selected frame. If we naively call get_selected_frame
here, then we can end up reading debuginfo for the
current frame, but we don't generally need the debuginfo
at this point. */
frame = get_selected_frame_if_set ();
}
else
frame = NULL;