* python/python.c (gdbpy_print_stack): Call begin_line and

fprintf_filtered inside TRY_CATCH.
This commit is contained in:
Tom Tromey 2013-02-28 19:25:42 +00:00
parent 9e974e552d
commit 7f6a5dde44
2 changed files with 24 additions and 10 deletions

View File

@ -1,3 +1,8 @@
2013-02-28 Tom Tromey <tromey@redhat.com>
* python/python.c (gdbpy_print_stack): Call begin_line and
fprintf_filtered inside TRY_CATCH.
2013-02-28 Tom Tromey <tromey@redhat.com>
* python/python.c (gdbpy_find_pc_line): Call find_pc_line

View File

@ -1043,6 +1043,8 @@ gdbpy_flush (PyObject *self, PyObject *args, PyObject *kw)
void
gdbpy_print_stack (void)
{
volatile struct gdb_exception except;
/* Print "none", just clear exception. */
if (gdbpy_should_print_stack == python_excp_none)
{
@ -1055,7 +1057,10 @@ gdbpy_print_stack (void)
/* PyErr_Print doesn't necessarily end output with a newline.
This works because Python's stdout/stderr is fed through
printf_filtered. */
begin_line ();
TRY_CATCH (except, RETURN_MASK_ALL)
{
begin_line ();
}
}
/* Print "message", just error print message. */
else
@ -1068,17 +1073,21 @@ gdbpy_print_stack (void)
/* Fetch the error message contained within ptype, pvalue. */
msg = gdbpy_exception_to_string (ptype, pvalue);
type = gdbpy_obj_to_string (ptype);
if (msg == NULL)
TRY_CATCH (except, RETURN_MASK_ALL)
{
/* An error occurred computing the string representation of the
error message. */
fprintf_filtered (gdb_stderr,
_("Error occurred computing Python error" \
"message.\n"));
if (msg == NULL)
{
/* An error occurred computing the string representation of the
error message. */
fprintf_filtered (gdb_stderr,
_("Error occurred computing Python error" \
"message.\n"));
}
else
fprintf_filtered (gdb_stderr, "Python Exception %s %s: \n",
type, msg);
}
else
fprintf_filtered (gdb_stderr, "Python Exception %s %s: \n",
type, msg);
Py_XDECREF (ptype);
Py_XDECREF (pvalue);