]> git.mxchange.org Git - simgear.git/blobdiff - simgear/debug/logstream.cxx
Better error reporting for effects
[simgear.git] / simgear / debug / logstream.cxx
index 28afbd26c313b601e6e25282fe3478df10453c9c..d906679e88ae1efa19194094ce6a146e539f0b6f 100644 (file)
@@ -34,6 +34,17 @@ sgDebugClass    logbuf::logClass        = SG_NONE;
 sgDebugPriority logbuf::logPriority     = SG_INFO;
 streambuf*      logbuf::sbuf            = NULL;
 
+namespace {
+struct ignore_me
+{
+    ignore_me()
+    {
+        logstream::initGlobalLogstream();
+    }
+};
+static ignore_me im;
+}
+
 logbuf::logbuf()
 {
 //     if ( sbuf == NULL )
@@ -92,22 +103,12 @@ logstream::setLogLevels( sgDebugClass c, sgDebugPriority p )
     logbuf::set_log_level( c, p );
 }
 
-void
+logstream *
 logstream::initGlobalLogstream()
 {
     // Force initialization of cerr.
     static std::ios_base::Init initializer;
-    // XXX Is the following still necessary?
-#ifdef __APPLE__
-    /**
-     * There appears to be a bug in the C++ runtime in Mac OS X that
-     * will crash if certain funtions are called (in this case
-     * cerr.rdbuf()) during static initialization of a class. This
-     * print statement is hack to kick the library in the pants so it
-     * won't crash when cerr.rdbuf() is first called -DW 
-     **/
-    std::cout << "Using Mac OS X hack for initializing C++ stdio..."
-              << std::endl;
-#endif
-    global_logstream = new logstream(std::cerr);
+    if( !global_logstream )
+        global_logstream = new logstream(std::cerr);
+    return global_logstream;
 }