diff --git a/src/ui/menus.cpp b/src/ui/menus.cpp index 75dab28e6..ae9afc931 100644 --- a/src/ui/menus.cpp +++ b/src/ui/menus.cpp @@ -2524,7 +2524,7 @@ global void MenuHandleMouseMove(int x,int y) ys -= mi->d.pulldown.curopt * h; if (!(x<xs || x>xs + mi->d.pulldown.xsize || y<ys || y>ys + h*mi->d.pulldown.noptions)) { j = (y - ys) / h; - if (j != mi->d.pulldown.cursel) { + if (j >= 0 && j < mi->d.pulldown.noptions && j != mi->d.pulldown.cursel) { mi->d.pulldown.cursel = j; RedrawFlag = 1; if (mi->d.pulldown.action) { @@ -2726,7 +2726,10 @@ global void MenuHandleButtonDown(int b __attribute__((unused))) } break; case MI_TYPE_PULLDOWN: - mi->d.pulldown.cursel = mi->d.pulldown.curopt; + if (mi->d.pulldown.curopt >= 0 && + mi->d.pulldown.curopt < mi->d.pulldown.noptions) { + mi->d.pulldown.cursel = mi->d.pulldown.curopt; + } break; case MI_TYPE_LISTBOX: if (mi->d.listbox.cursel != mi->d.listbox.curopt) { @@ -2798,7 +2801,9 @@ global void MenuHandleButtonUp(int b) mi->flags &= ~MenuButtonClicked; if (MenuButtonUnderCursor == i) { MenuButtonUnderCursor = -1; - if (mi->d.pulldown.cursel != mi->d.pulldown.curopt) { + if (mi->d.pulldown.cursel != mi->d.pulldown.curopt && + mi->d.pulldown.cursel >= 0 && + mi->d.pulldown.cursel < mi->d.pulldown.noptions) { mi->d.pulldown.curopt = mi->d.pulldown.cursel; if (mi->d.pulldown.action) { (*mi->d.pulldown.action)(mi, mi->d.pulldown.curopt);