diff options
| author | Matthias Melcher <github@matthiasm.com> | 2022-01-26 17:17:24 +0100 |
|---|---|---|
| committer | Matthias Melcher <github@matthiasm.com> | 2022-01-26 17:17:24 +0100 |
| commit | 5d9db353868008ae2f2b47ed501ee92d110b5313 (patch) | |
| tree | f9e01ad05a2b282f2540b4194ee122c78c963887 /src/Fl_Menu.cxx | |
| parent | 7308bcdb74e34626c6459699cb57371afd7b343b (diff) | |
Fix for #381, `backward` function crash
when no menu item is selected.
Diffstat (limited to 'src/Fl_Menu.cxx')
| -rw-r--r-- | src/Fl_Menu.cxx | 8 |
1 files changed, 7 insertions, 1 deletions
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) { |
