X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fdebug%2Flogstream.cxx;h=664038b93a713e57ebcfb368ca0ea5407e236dba;hb=9f88b077ee5294c4ad898016b7d66682466bbafb;hp=28afbd26c313b601e6e25282fe3478df10453c9c;hpb=d219c5c4c613e4f36d8ff1ce8af674fc96dcb543;p=simgear.git diff --git a/simgear/debug/logstream.cxx b/simgear/debug/logstream.cxx index 28afbd26..664038b9 100644 --- a/simgear/debug/logstream.cxx +++ b/simgear/debug/logstream.cxx @@ -27,13 +27,24 @@ logstream *logstream::global_logstream = 0; bool logbuf::logging_enabled = true; -#ifdef _MSC_VER +#ifdef _WIN32 bool logbuf::has_console = true; #endif 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; }