From d2d1ea20aef6ed97232280b5e15a52b8d7dc7b7d Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Tue, 16 Jun 2020 17:48:38 -0600 Subject: Fix crash when TUI window creation fails If a TUI window is written in Python, and if the window construction function fails, then gdb will crash. This patch fixes the crash. gdb/ChangeLog 2020-06-16 Tom Tromey * python/py-tui.c (tui_py_window::~tui_py_window): Handle case where m_window==nullptr. gdb/testsuite/ChangeLog 2020-06-16 Tom Tromey * gdb.python/tui-window.py (failwin): New function. Register it as a TUI window type. * gdb.python/tui-window.exp: Create new "fail" layout. Test it. --- gdb/python/py-tui.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'gdb/python') diff --git a/gdb/python/py-tui.c b/gdb/python/py-tui.c index ca88f85..95c71f1 100644 --- a/gdb/python/py-tui.c +++ b/gdb/python/py-tui.c @@ -133,7 +133,10 @@ tui_py_window::~tui_py_window () { gdbpy_enter enter_py (get_current_arch (), current_language); - if (PyObject_HasAttrString (m_window.get (), "close")) + /* This can be null if the user-provided Python construction + function failed. */ + if (m_window != nullptr + && PyObject_HasAttrString (m_window.get (), "close")) { gdbpy_ref<> result (PyObject_CallMethod (m_window.get (), "close", nullptr)); -- cgit v1.1