diff options
Diffstat (limited to 'gdb/varobj.c')
-rw-r--r-- | gdb/varobj.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/gdb/varobj.c b/gdb/varobj.c index 39760ad..92d43cb 100644 --- a/gdb/varobj.c +++ b/gdb/varobj.c @@ -26,6 +26,7 @@ #include "language.h" #include "wrapper.h" #include "gdbcmd.h" +#include "block.h" #include "gdb_assert.h" #include "gdb_string.h" @@ -1958,8 +1959,14 @@ c_value_of_root (struct varobj **var_handle) fi = frame_find_by_id (var->root->frame); within_scope = fi != NULL; /* FIXME: select_frame could fail */ - if (within_scope) - select_frame (fi); + if (fi) + { + CORE_ADDR pc = get_frame_pc (fi); + if (pc < BLOCK_START (var->root->valid_block) || + pc >= BLOCK_END (var->root->valid_block)) + within_scope = 0; + select_frame (fi); + } } if (within_scope) |