aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorMichael Eager <eager@eagercon.com>2012-06-25 16:53:20 +0000
committerMichael Eager <eager@eagercon.com>2012-06-25 16:53:20 +0000
commitadb4fe3b309bace3ceb2c0e305f7faf41eb708a6 (patch)
tree779190735ee9eb67711eb485efc21f309182a68e /gdb
parent944a90619c1efc9acf4a2cb420936999baecdee0 (diff)
downloadgdb-adb4fe3b309bace3ceb2c0e305f7faf41eb708a6.zip
gdb-adb4fe3b309bace3ceb2c0e305f7faf41eb708a6.tar.gz
gdb-adb4fe3b309bace3ceb2c0e305f7faf41eb708a6.tar.bz2
PR14291: KeyboardInterrupt not caught for Python output
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/python/python.c31
2 files changed, 23 insertions, 13 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index fe013de..a36ce76 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2012-06-25 Michael Eager <eager@eagercon.com>
+
+ PR python/14291
+ * python/python.c (gdbpy_write): Check for interrupted output.
+
2012-06-25 Greta Yorsh <greta.yorsh@arm.com>
* arm-tdep.c (arm_in_function_epilogue_p): Recognize POP with a single
diff --git a/gdb/python/python.c b/gdb/python/python.c
index 19eb7b5..c66efe4 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -862,26 +862,31 @@ gdbpy_write (PyObject *self, PyObject *args, PyObject *kw)
const char *arg;
static char *keywords[] = {"text", "stream", NULL };
int stream_type = 0;
+ volatile struct gdb_exception except;
if (! PyArg_ParseTupleAndKeywords (args, kw, "s|i", keywords, &arg,
&stream_type))
return NULL;
- switch (stream_type)
+ TRY_CATCH (except, RETURN_MASK_ALL)
{
- case 1:
- {
- fprintf_filtered (gdb_stderr, "%s", arg);
- break;
- }
- case 2:
- {
- fprintf_filtered (gdb_stdlog, "%s", arg);
- break;
- }
- default:
- fprintf_filtered (gdb_stdout, "%s", arg);
+ switch (stream_type)
+ {
+ case 1:
+ {
+ fprintf_filtered (gdb_stderr, "%s", arg);
+ break;
+ }
+ case 2:
+ {
+ fprintf_filtered (gdb_stdlog, "%s", arg);
+ break;
+ }
+ default:
+ fprintf_filtered (gdb_stdout, "%s", arg);
+ }
}
+ GDB_PY_HANDLE_EXCEPTION (except);
Py_RETURN_NONE;
}