diff options
Diffstat (limited to 'gdb/python/py-frame.c')
-rw-r--r-- | gdb/python/py-frame.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gdb/python/py-frame.c b/gdb/python/py-frame.c index 7e5dd17..b448686 100644 --- a/gdb/python/py-frame.c +++ b/gdb/python/py-frame.c @@ -504,6 +504,7 @@ frapy_read_var (PyObject *self, PyObject *args) struct frame_info *frame; PyObject *sym_obj, *block_obj = NULL; struct symbol *var = NULL; /* gcc-4.3.2 false warning. */ + const struct block *block = NULL; struct value *val = NULL; if (!PyArg_ParseTuple (args, "O|O", &sym_obj, &block_obj)) @@ -514,7 +515,6 @@ frapy_read_var (PyObject *self, PyObject *args) else if (gdbpy_is_string (sym_obj)) { char *var_name; - const struct block *block = NULL; struct cleanup *cleanup; var_name = python_string_to_target_string (sym_obj); @@ -536,11 +536,14 @@ frapy_read_var (PyObject *self, PyObject *args) TRY { + struct block_symbol lookup_sym; FRAPY_REQUIRE_VALID (self, frame); if (!block) block = get_frame_block (frame, NULL); - var = lookup_symbol (var_name, block, VAR_DOMAIN, NULL).symbol; + lookup_sym = lookup_symbol (var_name, block, VAR_DOMAIN, NULL); + var = lookup_sym.symbol; + block = lookup_sym.block; } CATCH (except, RETURN_MASK_ALL) { @@ -572,7 +575,7 @@ frapy_read_var (PyObject *self, PyObject *args) { FRAPY_REQUIRE_VALID (self, frame); - val = read_var_value (var, frame); + val = read_var_value (var, block, frame); } CATCH (except, RETURN_MASK_ALL) { |