aboutsummaryrefslogtreecommitdiffstats
path: root/vncviewer
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2025-02-06 09:22:30 +0100
committerPierre Ossman <ossman@cendio.se>2025-02-06 09:22:30 +0100
commit7dd01ea947142ed0173f58d8e9a2c9fbbbddefde (patch)
tree2f65555dc31bc86f5cdfb0944bd2916e1bd033ad /vncviewer
parent402f079920033631c14ec1a38194b57e9fb758c4 (diff)
downloadtigervnc-7dd01ea947142ed0173f58d8e9a2c9fbbbddefde.tar.gz
tigervnc-7dd01ea947142ed0173f58d8e9a2c9fbbbddefde.zip
Don't crash when closing auth dialog
We use button_cb for the dialog's callback as well, to handle the user closing the window. However, Fl_Window::window() doesn't return the window itself, but its parent window. Which it doesn't have, so we get NULL.
Diffstat (limited to 'vncviewer')
-rw-r--r--vncviewer/UserDialog.cxx10
1 files changed, 9 insertions, 1 deletions
diff --git a/vncviewer/UserDialog.cxx b/vncviewer/UserDialog.cxx
index c6cc02f7..088b5e29 100644
--- a/vncviewer/UserDialog.cxx
+++ b/vncviewer/UserDialog.cxx
@@ -65,8 +65,16 @@ std::string UserDialog::savedPassword;
static long ret_val = 0;
static void button_cb(Fl_Widget *widget, long val) {
+ Fl_Window* win;
+
ret_val = val;
- widget->window()->hide();
+
+ assert(widget != nullptr);
+ win = dynamic_cast<Fl_Window*>(widget);
+ if (win == nullptr)
+ win = widget->window();
+ assert(win != nullptr);
+ win->hide();
}
UserDialog::UserDialog()