diff options
Diffstat (limited to 'gdb/python/py-cmd.c')
-rw-r--r-- | gdb/python/py-cmd.c | 48 |
1 files changed, 1 insertions, 47 deletions
diff --git a/gdb/python/py-cmd.c b/gdb/python/py-cmd.c index 27c4689..e7eb66f 100644 --- a/gdb/python/py-cmd.c +++ b/gdb/python/py-cmd.c @@ -145,53 +145,7 @@ cmdpy_function (struct cmd_list_element *command, NULL)); if (result == NULL) - { - PyObject *ptype, *pvalue, *ptraceback; - - PyErr_Fetch (&ptype, &pvalue, &ptraceback); - - /* Try to fetch an error message contained within ptype, pvalue. - When fetching the error message we need to make our own copy, - we no longer own ptype, pvalue after the call to PyErr_Restore. */ - - gdb::unique_xmalloc_ptr<char> - msg (gdbpy_exception_to_string (ptype, pvalue)); - - if (msg == NULL) - { - /* An error occurred computing the string representation of the - error message. This is rare, but we should inform the user. */ - printf_filtered (_("An error occurred in a Python command\n" - "and then another occurred computing the " - "error message.\n")); - gdbpy_print_stack (); - } - - /* Don't print the stack for gdb.GdbError exceptions. - It is generally used to flag user errors. - - We also don't want to print "Error occurred in Python command" - for user errors. However, a missing message for gdb.GdbError - exceptions is arguably a bug, so we flag it as such. */ - - if (! PyErr_GivenExceptionMatches (ptype, gdbpy_gdberror_exc) - || msg == NULL || *msg == '\0') - { - PyErr_Restore (ptype, pvalue, ptraceback); - gdbpy_print_stack (); - if (msg != NULL && *msg != '\0') - error (_("Error occurred in Python command: %s"), msg.get ()); - else - error (_("Error occurred in Python command.")); - } - else - { - Py_XDECREF (ptype); - Py_XDECREF (pvalue); - Py_XDECREF (ptraceback); - error ("%s", msg.get ()); - } - } + gdbpy_handle_exception (); } /* Helper function for the Python command completers (both "pure" |