forked from Imagelibrary/binutils-gdb
* py-finishbreakpoint.c (bpfinishpy_init): Reorganize to call
frame_object_to_frame_info inside TRY_CATCH.
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
2013-02-28 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
|
* py-finishbreakpoint.c (bpfinishpy_init): Reorganize to call
|
||||||
|
frame_object_to_frame_info inside TRY_CATCH.
|
||||||
|
|
||||||
2013-02-28 Tom Tromey <tromey@redhat.com>
|
2013-02-28 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
* py-block.c (gdbpy_block_for_pc): Call block_for_pc inside
|
* py-block.c (gdbpy_block_for_pc): Call block_for_pc inside
|
||||||
|
|||||||
@@ -173,39 +173,43 @@ bpfinishpy_init (PyObject *self, PyObject *args, PyObject *kwargs)
|
|||||||
&frame_obj, &internal))
|
&frame_obj, &internal))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/* Default frame to gdb.newest_frame if necessary. */
|
|
||||||
if (!frame_obj)
|
|
||||||
frame_obj = gdbpy_newest_frame (NULL, NULL);
|
|
||||||
else
|
|
||||||
Py_INCREF (frame_obj);
|
|
||||||
|
|
||||||
frame = frame_object_to_frame_info (frame_obj);
|
|
||||||
Py_DECREF (frame_obj);
|
|
||||||
|
|
||||||
if (frame == NULL)
|
|
||||||
goto invalid_frame;
|
|
||||||
|
|
||||||
TRY_CATCH (except, RETURN_MASK_ALL)
|
TRY_CATCH (except, RETURN_MASK_ALL)
|
||||||
{
|
{
|
||||||
prev_frame = get_prev_frame (frame);
|
/* Default frame to newest frame if necessary. */
|
||||||
if (prev_frame == 0)
|
if (frame_obj == NULL)
|
||||||
{
|
frame = get_current_frame ();
|
||||||
PyErr_SetString (PyExc_ValueError, _("\"FinishBreakpoint\" not " \
|
|
||||||
"meaningful in the outermost "\
|
|
||||||
"frame."));
|
|
||||||
}
|
|
||||||
else if (get_frame_type (prev_frame) == DUMMY_FRAME)
|
|
||||||
{
|
|
||||||
PyErr_SetString (PyExc_ValueError, _("\"FinishBreakpoint\" cannot "\
|
|
||||||
"be set on a dummy frame."));
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
frame = frame_object_to_frame_info (frame_obj);
|
||||||
frame_id = get_frame_id (prev_frame);
|
|
||||||
if (frame_id_eq (frame_id, null_frame_id))
|
if (frame == NULL)
|
||||||
PyErr_SetString (PyExc_ValueError,
|
{
|
||||||
_("Invalid ID for the `frame' object."));
|
PyErr_SetString (PyExc_ValueError,
|
||||||
}
|
_("Invalid ID for the `frame' object."));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
prev_frame = get_prev_frame (frame);
|
||||||
|
if (prev_frame == 0)
|
||||||
|
{
|
||||||
|
PyErr_SetString (PyExc_ValueError,
|
||||||
|
_("\"FinishBreakpoint\" not "
|
||||||
|
"meaningful in the outermost "
|
||||||
|
"frame."));
|
||||||
|
}
|
||||||
|
else if (get_frame_type (prev_frame) == DUMMY_FRAME)
|
||||||
|
{
|
||||||
|
PyErr_SetString (PyExc_ValueError,
|
||||||
|
_("\"FinishBreakpoint\" cannot "
|
||||||
|
"be set on a dummy frame."));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
frame_id = get_frame_id (prev_frame);
|
||||||
|
if (frame_id_eq (frame_id, null_frame_id))
|
||||||
|
PyErr_SetString (PyExc_ValueError,
|
||||||
|
_("Invalid ID for the `frame' object."));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (except.reason < 0)
|
if (except.reason < 0)
|
||||||
{
|
{
|
||||||
@@ -305,11 +309,6 @@ bpfinishpy_init (PyObject *self, PyObject *args, PyObject *kwargs)
|
|||||||
self_bpfinish->py_bp.bp->pspace = current_program_space;
|
self_bpfinish->py_bp.bp->pspace = current_program_space;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
invalid_frame:
|
|
||||||
PyErr_SetString (PyExc_ValueError,
|
|
||||||
_("Invalid ID for the `frame' object."));
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Called when GDB notices that the finish breakpoint BP_OBJ is out of
|
/* Called when GDB notices that the finish breakpoint BP_OBJ is out of
|
||||||
|
|||||||
Reference in New Issue
Block a user