all repos — fluxbox @ 16218ae90b2499773d0c49a8c2900f269f5a2974

custom fork of the fluxbox windowmanager

fix crash when changing toolbar visibility with empty toolbar.tools
markt markt
commit

16218ae90b2499773d0c49a8c2900f269f5a2974

parent

adddf014bd80d5ea7595fc1e8df233a857b8d90f

M ChangeLogChangeLog

@@ -1,5 +1,8 @@

(Format: Year/Month/Day) Changes for 1.0.0: +*07/09/07: + * Fix crash when changing toolbar visibility, #1786765 (Mark) + FbTk/MenuItem.cc *07/08/27: * Fix hardcoded Mod1, use ModKey() now (Mathias) Window.cc
M src/FbTk/Menu.ccsrc/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.ccsrc/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.ccsrc/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.ccsrc/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.ccsrc/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.ccsrc/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(),