From c6099d777d844699fb8a4243921159898bc4f45c Mon Sep 17 00:00:00 2001
From: Mark Tiefenbruck <mark@fluxbox.org>
Date: Sat, 12 Jan 2008 17:49:50 -0800
Subject: fix crashes on restart

---
 src/Toolbar.cc |  3 ++-
 src/fluxbox.cc | 15 +++++++--------
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/src/Toolbar.cc b/src/Toolbar.cc
index 89ba9cf..18f07fc 100644
--- a/src/Toolbar.cc
+++ b/src/Toolbar.cc
@@ -287,7 +287,8 @@ Toolbar::Toolbar(BScreen &scrn, FbTk::XLayer &layer, size_t width):
 }
 
 Toolbar::~Toolbar() {
-    Fluxbox::instance()->keys()->unregisterWindow(window().window());
+    if (Fluxbox::instance()->keys())
+        Fluxbox::instance()->keys()->unregisterWindow(window().window());
     FbTk::EventManager::instance()->remove(window());
     // remove menu items before we delete tools so we dont end up
     // with dangling pointers to old submenu items (internal menus)
diff --git a/src/fluxbox.cc b/src/fluxbox.cc
index 110123c..d45a45e 100644
--- a/src/fluxbox.cc
+++ b/src/fluxbox.cc
@@ -420,14 +420,6 @@ Fluxbox::Fluxbox(int argc, char **argv, const char *dpy_name, const char *rcfile
 
 Fluxbox::~Fluxbox() {
 
-    // destroy atomhandlers
-    for (AtomHandlerContainerIt it= m_atomhandler.begin();
-         it != m_atomhandler.end();
-         it++) {
-        delete (*it).first;
-    }
-    m_atomhandler.clear();
-
     // this needs to be destroyed before screens; otherwise, menus stored in
     // key commands cause a segfault when the XLayerItem is destroyed
     m_key.reset(0);
@@ -438,6 +430,13 @@ Fluxbox::~Fluxbox() {
         m_screen_list.pop_back();
     }
 
+    // destroy atomhandlers
+    for (AtomHandlerContainerIt it= m_atomhandler.begin();
+         it != m_atomhandler.end();
+         it++) {
+        delete (*it).first;
+    }
+    m_atomhandler.clear();
 
     clearMenuFilenames();
 }
-- 
cgit v0.11.2