diff options
Diffstat (limited to 'gdb/eval.c')
-rw-r--r-- | gdb/eval.c | 19 |
1 files changed, 15 insertions, 4 deletions
@@ -41,7 +41,6 @@ #include "gdb_obstack.h" #include "objfiles.h" #include "python/python.h" -#include "wrapper.h" #include "gdb_assert.h" @@ -234,9 +233,21 @@ fetch_subexp_value (struct expression *exp, int *pc, struct value **valp, /* Make sure it's not lazy, so that after the target stops again we have a non-lazy previous value to compare with. */ - if (result != NULL - && (!value_lazy (result) || gdb_value_fetch_lazy (result))) - *valp = result; + if (result != NULL) + { + if (!value_lazy (result)) + *valp = result; + else + { + volatile struct gdb_exception except; + + TRY_CATCH (except, RETURN_MASK_ERROR) + { + value_fetch_lazy (result); + *valp = result; + } + } + } if (val_chain) { |