From 5d9db353868008ae2f2b47ed501ee92d110b5313 Mon Sep 17 00:00:00 2001 From: Matthias Melcher Date: Wed, 26 Jan 2022 17:17:24 +0100 Subject: Fix for #381, `backward` function crash when no menu item is selected. --- src/Fl_Menu.cxx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/Fl_Menu.cxx') diff --git a/src/Fl_Menu.cxx b/src/Fl_Menu.cxx index a9fe73291..62fbd56ba 100644 --- a/src/Fl_Menu.cxx +++ b/src/Fl_Menu.cxx @@ -644,6 +644,9 @@ static int forward(int menu) { // go to next item in menu menu if possible } static int backward(int menu) { // previous item in menu menu if possible + // `menu` is -1 if no item is currently selected, we return 0 + if (menu<0) + return 0; menustate &pp = *p; menuwindow &m = *(pp.p[menu]); int item = (menu == pp.menu_number) ? pp.item_number : m.selected; @@ -719,7 +722,10 @@ int menuwindow::handle_part1(int e) { switch (Fl::event_key()) { case FL_BackSpace: BACKTAB: - if (!backward(pp.menu_number)) {pp.item_number = -1;backward(pp.menu_number);} + if (!backward(pp.menu_number)) { + pp.item_number = -1; + backward(pp.menu_number); + } return 1; case FL_Up: if (pp.menubar && pp.menu_number == 0) { -- cgit v1.2.3