* python/py-frame.c (frapy_older, frapy_newer, gdbpy_newest_frame)

(gdbpy_selected_frame): Move object-construction code
	out of TRY_CATCH.
This commit is contained in:
Tom Tromey 2013-05-20 20:37:06 +00:00
parent aa36459a92
commit dcf8783234
2 changed files with 28 additions and 24 deletions

View file

@ -1,3 +1,9 @@
2013-05-20 Tom Tromey <tromey@redhat.com>
* python/py-frame.c (frapy_older, frapy_newer, gdbpy_newest_frame)
(gdbpy_selected_frame): Move object-construction code
out of TRY_CATCH.
2013-05-20 Tom Tromey <tromey@redhat.com> 2013-05-20 Tom Tromey <tromey@redhat.com>
* python/py-arch.c (gdbpy_initialize_arch): Use * python/py-arch.c (gdbpy_initialize_arch): Use

View file

@ -338,7 +338,7 @@ frame_info_to_frame_object (struct frame_info *frame)
static PyObject * static PyObject *
frapy_older (PyObject *self, PyObject *args) frapy_older (PyObject *self, PyObject *args)
{ {
struct frame_info *frame, *prev; struct frame_info *frame, *prev = NULL;
volatile struct gdb_exception except; volatile struct gdb_exception except;
PyObject *prev_obj = NULL; /* Initialize to appease gcc warning. */ PyObject *prev_obj = NULL; /* Initialize to appease gcc warning. */
@ -347,6 +347,9 @@ frapy_older (PyObject *self, PyObject *args)
FRAPY_REQUIRE_VALID (self, frame); FRAPY_REQUIRE_VALID (self, frame);
prev = get_prev_frame (frame); prev = get_prev_frame (frame);
}
GDB_PY_HANDLE_EXCEPTION (except);
if (prev) if (prev)
prev_obj = (PyObject *) frame_info_to_frame_object (prev); prev_obj = (PyObject *) frame_info_to_frame_object (prev);
else else
@ -354,8 +357,6 @@ frapy_older (PyObject *self, PyObject *args)
Py_INCREF (Py_None); Py_INCREF (Py_None);
prev_obj = Py_None; prev_obj = Py_None;
} }
}
GDB_PY_HANDLE_EXCEPTION (except);
return prev_obj; return prev_obj;
} }
@ -367,7 +368,7 @@ frapy_older (PyObject *self, PyObject *args)
static PyObject * static PyObject *
frapy_newer (PyObject *self, PyObject *args) frapy_newer (PyObject *self, PyObject *args)
{ {
struct frame_info *frame, *next; struct frame_info *frame, *next = NULL;
volatile struct gdb_exception except; volatile struct gdb_exception except;
PyObject *next_obj = NULL; /* Initialize to appease gcc warning. */ PyObject *next_obj = NULL; /* Initialize to appease gcc warning. */
@ -376,6 +377,9 @@ frapy_newer (PyObject *self, PyObject *args)
FRAPY_REQUIRE_VALID (self, frame); FRAPY_REQUIRE_VALID (self, frame);
next = get_next_frame (frame); next = get_next_frame (frame);
}
GDB_PY_HANDLE_EXCEPTION (except);
if (next) if (next)
next_obj = (PyObject *) frame_info_to_frame_object (next); next_obj = (PyObject *) frame_info_to_frame_object (next);
else else
@ -383,8 +387,6 @@ frapy_newer (PyObject *self, PyObject *args)
Py_INCREF (Py_None); Py_INCREF (Py_None);
next_obj = Py_None; next_obj = Py_None;
} }
}
GDB_PY_HANDLE_EXCEPTION (except);
return next_obj; return next_obj;
} }
@ -520,18 +522,16 @@ frapy_select (PyObject *self, PyObject *args)
PyObject * PyObject *
gdbpy_newest_frame (PyObject *self, PyObject *args) gdbpy_newest_frame (PyObject *self, PyObject *args)
{ {
struct frame_info *frame; struct frame_info *frame = NULL;
PyObject *frame_obj = NULL; /* Initialize to appease gcc warning. */
volatile struct gdb_exception except; volatile struct gdb_exception except;
TRY_CATCH (except, RETURN_MASK_ALL) TRY_CATCH (except, RETURN_MASK_ALL)
{ {
frame = get_current_frame (); frame = get_current_frame ();
frame_obj = frame_info_to_frame_object (frame);
} }
GDB_PY_HANDLE_EXCEPTION (except); GDB_PY_HANDLE_EXCEPTION (except);
return frame_obj; return frame_info_to_frame_object (frame);
} }
/* Implementation of gdb.selected_frame () -> gdb.Frame. /* Implementation of gdb.selected_frame () -> gdb.Frame.
@ -540,18 +540,16 @@ gdbpy_newest_frame (PyObject *self, PyObject *args)
PyObject * PyObject *
gdbpy_selected_frame (PyObject *self, PyObject *args) gdbpy_selected_frame (PyObject *self, PyObject *args)
{ {
struct frame_info *frame; struct frame_info *frame = NULL;
PyObject *frame_obj = NULL; /* Initialize to appease gcc warning. */
volatile struct gdb_exception except; volatile struct gdb_exception except;
TRY_CATCH (except, RETURN_MASK_ALL) TRY_CATCH (except, RETURN_MASK_ALL)
{ {
frame = get_selected_frame ("No frame is currently selected."); frame = get_selected_frame ("No frame is currently selected.");
frame_obj = frame_info_to_frame_object (frame);
} }
GDB_PY_HANDLE_EXCEPTION (except); GDB_PY_HANDLE_EXCEPTION (except);
return frame_obj; return frame_info_to_frame_object (frame);
} }
/* Implementation of gdb.stop_reason_string (Integer) -> String. /* Implementation of gdb.stop_reason_string (Integer) -> String.