diff options
author | Tom Tromey <tom@tromey.com> | 2018-09-18 06:27:09 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2018-10-06 22:17:45 -0600 |
commit | 2a8be20359dba9cc684fd3ffa222d985399f3b18 (patch) | |
tree | cfd6e84fca0e481698a7f8ab984ae48beaac7b89 /gdb/python | |
parent | 2fb009bbd1d65a837e5032e744ba30b49c7f472a (diff) | |
download | binutils-gdb-2a8be20359dba9cc684fd3ffa222d985399f3b18.tar.gz |
Fix Python gdb.Breakpoint.location crash
I noticed today that gdb.Breakpoint.location will crash when applied
to a catchpoint made with "catch throw".
The bug is that "catch throw" makes a breakpoint that is of type
bp_breakpoint, but which does not have a location.
Regression tested on x86-64 Fedora 28.
gdb/ChangeLog
2018-10-06 Tom Tromey <tom@tromey.com>
* python/py-breakpoint.c (bppy_get_location): Handle a
bp_breakpoint without a location.
gdb/testsuite/ChangeLog
2018-10-06 Tom Tromey <tom@tromey.com>
* gdb.python/py-breakpoint.exp (check_last_event): Check location
of a "throw" catchpoint.
Diffstat (limited to 'gdb/python')
-rw-r--r-- | gdb/python/py-breakpoint.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gdb/python/py-breakpoint.c b/gdb/python/py-breakpoint.c index e1db674647a..94afd503e92 100644 --- a/gdb/python/py-breakpoint.c +++ b/gdb/python/py-breakpoint.c @@ -391,7 +391,12 @@ bppy_get_location (PyObject *self, void *closure) if (obj->bp->type != bp_breakpoint) Py_RETURN_NONE; - str = event_location_to_string (obj->bp->location.get ()); + struct event_location *location = obj->bp->location.get (); + /* "catch throw" makes a breakpoint of type bp_breakpoint that does + not have a location. */ + if (location == nullptr) + Py_RETURN_NONE; + str = event_location_to_string (location); if (! str) str = ""; return host_string_to_python_string (str); |