(c_value_of_root): Check scope within nested statements.
#include "language.h"
#include "wrapper.h"
#include "gdbcmd.h"
+#include "block.h"
#include "gdb_assert.h"
#include "gdb_string.h"
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)