diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/python/py-frame.c | 7 |
2 files changed, 11 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2588d05..d5a5452 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2013-05-30 Tom Tromey <tromey@redhat.com> + * python/py-frame.c (frapy_read_var): Call do_cleanups along + all return paths. + +2013-05-30 Tom Tromey <tromey@redhat.com> + * python/py-breakpoint.c (bppy_get_commands): Call do_cleanups along all return paths. diff --git a/gdb/python/py-frame.c b/gdb/python/py-frame.c index c29d626..2615ddf 100644 --- a/gdb/python/py-frame.c +++ b/gdb/python/py-frame.c @@ -461,6 +461,7 @@ frapy_read_var (PyObject *self, PyObject *args) { PyErr_SetString (PyExc_RuntimeError, _("Second argument must be block.")); + do_cleanups (cleanup); return NULL; } } @@ -473,7 +474,11 @@ frapy_read_var (PyObject *self, PyObject *args) block = get_frame_block (frame, NULL); var = lookup_symbol (var_name, block, VAR_DOMAIN, NULL); } - GDB_PY_HANDLE_EXCEPTION (except); + if (except.reason < 0) + { + do_cleanups (cleanup); + GDB_PY_HANDLE_EXCEPTION (except); + } if (!var) { |