X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f644b28c1154d638270d0d1abbc41f760be6abbd..b9efe021b554fa3967d1442cf758435c5cd5ae8f:/src/common/log.cpp diff --git a/src/common/log.cpp b/src/common/log.cpp index 8323595bde..0471c87c76 100644 --- a/src/common/log.cpp +++ b/src/common/log.cpp @@ -209,8 +209,7 @@ void wxLogFatalError(const wxChar *szFormat, ...) void wxVLogVerbose(const wxChar *szFormat, va_list argptr) { if ( IsLoggingEnabled() ) { - wxLog *pLog = wxLog::GetActiveTarget(); - if ( pLog != NULL && pLog->GetVerbose() ) { + if ( wxLog::GetActiveTarget() != NULL && wxLog::GetVerbose() ) { wxCRIT_SECT_LOCKER(locker, gs_csLogBuf); wxVsnprintf(s_szBuf, s_szBufSize, szFormat, argptr); @@ -367,10 +366,6 @@ void WXDLLEXPORT wxLogSysError(long lErrCode, const wxChar *szFormat, ...) // wxLog class implementation // ---------------------------------------------------------------------------- -wxLog::wxLog() -{ -} - wxChar *wxLog::SetLogBuffer( wxChar *buf, size_t size) { wxChar *oldbuf = s_szBuf; @@ -527,6 +522,25 @@ void wxLog::Flush() return false; } +// ---------------------------------------------------------------------------- +// wxLogBuffer implementation +// ---------------------------------------------------------------------------- + +void wxLogBuffer::Flush() +{ + if ( !m_str.empty() ) + { + wxMessageOutputBest out; + out.Printf(_T("%s"), m_str.c_str()); + m_str.clear(); + } +} + +void wxLogBuffer::DoLogString(const wxChar *szString, time_t WXUNUSED(t)) +{ + m_str << szString << _T("\n"); +} + // ---------------------------------------------------------------------------- // wxLogStderr class implementation // ---------------------------------------------------------------------------- @@ -558,7 +572,8 @@ void wxLogStderr::DoLogString(const wxChar *szString, time_t WXUNUSED(t)) wxAppTraits *traits = wxTheApp ? wxTheApp->GetTraits() : NULL; if ( traits && !traits->HasStderr() ) { - wxMessageOutputDebug().Printf(_T("%s"), str.c_str()); + wxMessageOutputDebug dbgout; + dbgout.Printf(_T("%s\n"), str.c_str()); } } } @@ -741,15 +756,27 @@ const wxChar *wxSysErrorMsg(unsigned long nErrCode) // get error message from system LPVOID lpMsgBuf; - FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, - NULL, nErrCode, + if ( ::FormatMessage + ( + FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, + NULL, + nErrCode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, - 0, NULL); + 0, + NULL + ) == 0 ) + { + // if this happens, something is seriously wrong, so don't use _() here + // for safety + wxSprintf(s_szBuf, _T("unknown error %lx"), nErrCode); + return s_szBuf; + } + // copy it to our buffer and free memory - // Crashes on SmartPhone -#if !defined(__SMARTPHONE__) + // Crashes on SmartPhone (FIXME) +#if !defined(__SMARTPHONE__) /* of WinCE */ if( lpMsgBuf != 0 ) { wxStrncpy(s_szBuf, (const wxChar *)lpMsgBuf, WXSIZEOF(s_szBuf) - 1); s_szBuf[WXSIZEOF(s_szBuf) - 1] = wxT('\0');