fix crash when changing toolbar visibility with empty toolbar.tools
markt markt
7 files changed,
13 insertions(+),
7 deletions(-)
M
src/FbTk/Menu.cc
→
src/FbTk/Menu.cc
@@ -506,7 +506,7 @@
void Menu::show() { - if (isVisible() || !menuitems.size()) + if (isVisible() || menuitems.empty()) return; m_visible = true;
M
src/FbTk/MenuItem.cc
→
src/FbTk/MenuItem.cc
@@ -34,8 +34,11 @@
namespace FbTk { void MenuItem::click(int button, int time) { - if (m_command.get() != 0) - m_command->execute(); + if (m_command.get() != 0) { + // we need a local variable, since the command may destroy this object + RefCount<Command> tmp(m_command); + tmp->execute(); + } } void MenuItem::drawLine(FbDrawable &draw, const MenuTheme &theme, size_t size,
M
src/FbTk/Subject.cc
→
src/FbTk/Subject.cc
@@ -64,7 +64,7 @@ std::bind2nd(std::mem_fun(&Observer::update), this));
m_notify_mode = false; // remove dead observers - if (m_dead_observers.size()) { + if (!m_dead_observers.empty()) { std::for_each(m_dead_observers.begin(), m_dead_observers.end(), std::bind1st(std::mem_fun(&Subject::detach), this));
M
src/MenuCreator.cc
→
src/MenuCreator.cc
@@ -325,7 +325,7 @@ FbTk::Menu *submenu = MenuCreator::createMenu("", screen_number);
if (submenu == 0) return; - if (str_cmd.size()) + if (!str_cmd.empty()) submenu->setLabel(str_cmd); else submenu->setLabel(str_label);
M
src/Remember.cc
→
src/Remember.cc
@@ -387,7 +387,7 @@ continue; //read next line
bool had_error = false; - if (!str_key.size()) + if (str_key.empty()) continue; //read next line if (strcasecmp(str_key.c_str(), "Workspace") == 0) { unsigned int w;
M
src/Toolbar.cc
→
src/Toolbar.cc
@@ -412,7 +412,7 @@ setupMenus(true); // rebuild menu but skip rebuild of placement menu
m_tools = tools; // copy values - if (m_tools.size()) { + if (!m_tools.empty()) { // make lower case transform(m_tools.begin(), m_tools.end(), m_tools.begin(),