From e2d52a39485d0ab9d5cb5ae027372b612eb32e60 Mon Sep 17 00:00:00 2001
From: Mathias Gumz <akira at fluxbox dot org>
Date: Wed, 13 Oct 2010 15:48:29 +0200
Subject: bugfix: std::string() does not like NULL on construction

not having DISPLAY set (eg: on a headless system) caused fluxbox to crash.
---
 src/main.cc | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/src/main.cc b/src/main.cc
index b678738..4b4bdc5 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -216,14 +216,23 @@ static void showInfo(ostream &ostr) {
 }
 
 struct Options {
-    Options() : 
-        session_display(getenv("DISPLAY")),
-        rc_path(std::string(getenv("HOME")) + "/." + realProgramName("fluxbox")),
-        rc_file(rc_path + "/init"),
-        xsync(false) {
+    Options() : xsync(false) {
 
+        const char* env;
+
+        env = getenv("DISPLAY");
+        if (env) {
+            session_display.assign(env);
+        }
+
+        env = getenv("HOME");
+        if (env) {
+            rc_path.assign(std::string(env) + "/." + realProgramName("fluxbox"));
+            rc_file = rc_path + "/init";
+        }
     }
 
+
     std::string session_display;
     std::string rc_path;
     std::string rc_file;
@@ -394,7 +403,11 @@ void updateConfigFilesIfNeeded(const std::string& rc_file) {
         string commandargs = realProgramName("fluxbox-update_configs");
         commandargs += " -rc " + rc_file;
 
-        system(commandargs.c_str());
+        if (system(commandargs.c_str())) {
+            fbdbg << "running '" 
+                << commandargs
+                << "' failed." << endl;
+        }
     }
 }
 
-- 
cgit v0.11.2