From 13985f814935dda3d7d1c09cc068aa86ff22e212 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Wed, 5 Mar 2014 21:17:25 -0800 Subject: [PATCH] fix crash in Menu.removeSeparator() if the menu item doesn't exist or isn't a separator --- interface/src/Menu.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 8c6cdacae1..0586382cb9 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -1320,17 +1320,25 @@ void Menu::addSeparator(const QString& menuName, const QString& separatorName) { void Menu::removeSeparator(const QString& menuName, const QString& separatorName) { QMenu* menu = getMenu(menuName); + bool separatorRemoved = false; if (menu) { int textAt = findPositionOfMenuItem(menu, separatorName); QList menuActions = menu->actions(); QAction* separatorText = menuActions[textAt]; - QAction* separatorLine = menuActions[textAt - 1]; - if (separatorLine->isSeparator()) { - menu->removeAction(separatorText); - menu->removeAction(separatorLine); + if (textAt > 0 && textAt < menuActions.size()) { + QAction* separatorLine = menuActions[textAt - 1]; + if (separatorLine) { + if (separatorLine->isSeparator()) { + menu->removeAction(separatorText); + menu->removeAction(separatorLine); + separatorRemoved = true; + } + } } } - QMenuBar::repaint(); + if (separatorRemoved) { + QMenuBar::repaint(); + } } void Menu::addMenuItem(const MenuItemProperties& properties) {