diff options
Diffstat (limited to 'gdb/python/py-tui.c')
-rw-r--r-- | gdb/python/py-tui.c | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/gdb/python/py-tui.c b/gdb/python/py-tui.c index 73b73f3..72e9c0d 100644 --- a/gdb/python/py-tui.c +++ b/gdb/python/py-tui.c @@ -47,6 +47,9 @@ struct gdbpy_tui_window /* The TUI window, or nullptr if the window has been deleted. */ tui_py_window *window; + + /* Return true if this object is valid. */ + bool is_valid () const; }; extern PyTypeObject gdbpy_tui_window_object_type @@ -137,6 +140,14 @@ private: gdbpy_ref<gdbpy_tui_window> m_wrapper; }; +/* See gdbpy_tui_window declaration above. */ + +bool +gdbpy_tui_window::is_valid () const +{ + return window != nullptr && tui_active; +} + tui_py_window::~tui_py_window () { gdbpy_enter enter_py (get_current_arch (), current_language); @@ -344,11 +355,23 @@ gdbpy_register_tui_window (PyObject *self, PyObject *args, PyObject *kw) #define REQUIRE_WINDOW(Window) \ do { \ - if ((Window)->window == nullptr) \ + if (!(Window)->is_valid ()) \ return PyErr_Format (PyExc_RuntimeError, \ _("TUI window is invalid.")); \ } while (0) +/* Require that "Window" be a valid window. */ + +#define REQUIRE_WINDOW_FOR_SETTER(Window) \ + do { \ + if (!(Window)->is_valid ()) \ + { \ + PyErr_Format (PyExc_RuntimeError, \ + _("TUI window is invalid.")); \ + return -1; \ + } \ + } while (0) + /* Python function which checks the validity of a TUI window object. */ static PyObject * @@ -356,7 +379,7 @@ gdbpy_tui_is_valid (PyObject *self, PyObject *args) { gdbpy_tui_window *win = (gdbpy_tui_window *) self; - if (win->window != nullptr) + if (win->is_valid ()) Py_RETURN_TRUE; Py_RETURN_FALSE; } @@ -428,11 +451,7 @@ gdbpy_tui_set_title (PyObject *self, PyObject *newvalue, void *closure) { gdbpy_tui_window *win = (gdbpy_tui_window *) self; - if (win->window == nullptr) - { - PyErr_Format (PyExc_RuntimeError, _("TUI window is invalid.")); - return -1; - } + REQUIRE_WINDOW_FOR_SETTER (win); if (newvalue == nullptr) { |