X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/03147cd08e78ba8a709ee019a8a51ac6b57e6f32..124193837f27d1fb75b9607f0e005b9897d1e320:/src/common/log.cpp diff --git a/src/common/log.cpp b/src/common/log.cpp index ebf14bf02c..be03d3c4c8 100644 --- a/src/common/log.cpp +++ b/src/common/log.cpp @@ -39,7 +39,6 @@ #ifdef __WXMSW__ #include "wx/msw/private.h" #endif - #include "wx/msgdlg.h" #endif #endif //WX_PRECOMP @@ -61,10 +60,6 @@ #include "wx/msw/private.h" // includes windows.h for OutputDebugString #endif -#if !defined(__WXMSW__) || defined(__WXMICROWIN__) - #include -#endif //Win/Unix - // ---------------------------------------------------------------------------- // non member functions // ---------------------------------------------------------------------------- @@ -423,7 +418,7 @@ wxLogStderr::wxLogStderr(FILE *fp) m_fp = fp; } -#if defined(__WXMAC__) && !defined(__UNIX__) +#if defined(__WXMAC__) && !defined(__DARWIN__) #define kDebuggerSignature 'MWDB' static Boolean FindProcessBySignature(OSType signature, ProcessInfoRec* info) @@ -519,7 +514,7 @@ void wxLogStderr::DoLogString(const wxChar *szString, time_t WXUNUSED(t)) str += wxT("\r\n") ; OutputDebugString(str.c_str()); #endif // MSW -#if defined(__WXMAC__) && !defined(__WXMAC_X__) && wxUSE_GUI +#if defined(__WXMAC__) && !defined(__DARWIN__) && wxUSE_GUI Str255 pstr ; strcpy( (char*) pstr , str.c_str() ) ; strcat( (char*) pstr , ";g" ) ; @@ -620,6 +615,24 @@ void wxLogChain::DoLog(wxLogLevel level, const wxChar *szString, time_t t) } } +// ---------------------------------------------------------------------------- +// wxLogPassThrough +// ---------------------------------------------------------------------------- + +#ifdef __VISUALC__ + // "'this' : used in base member initializer list" - so what? + #pragma warning(disable:4355) +#endif // VC++ + +wxLogPassThrough::wxLogPassThrough() + : wxLogChain(this) +{ +} + +#ifdef __VISUALC__ + #pragma warning(default:4355) +#endif // VC++ + // ============================================================================ // Global functions/variables // ============================================================================ @@ -719,7 +732,10 @@ const wxChar *wxSysErrorMsg(unsigned long nErrCode) 0, NULL); // copy it to our buffer and free memory - wxStrncpy(s_szBuf, (const wxChar *)lpMsgBuf, WXSIZEOF(s_szBuf) - 1); + if( lpMsgBuf != 0 ) + wxStrncpy(s_szBuf, (const wxChar *)lpMsgBuf, WXSIZEOF(s_szBuf) - 1); + else + s_szBuf[0] = wxT('\0'); s_szBuf[WXSIZEOF(s_szBuf) - 1] = wxT('\0'); LocalFree(lpMsgBuf); @@ -748,122 +764,4 @@ const wxChar *wxSysErrorMsg(unsigned long nErrCode) #endif // Win/Unix } -// ---------------------------------------------------------------------------- -// debug helper -// ---------------------------------------------------------------------------- - -#ifdef __WXDEBUG__ - -// wxASSERT() helper -bool wxAssertIsEqual(int x, int y) -{ - return x == y; -} - -// break into the debugger -void wxTrap() -{ -#if defined(__WXMSW__) && !defined(__WXMICROWIN__) - DebugBreak(); -#elif defined(__WXMAC__) -#if __powerc - Debugger(); -#else - SysBreak(); -#endif -#elif defined(__UNIX__) - raise(SIGTRAP); -#else - // TODO -#endif // Win/Unix -} - -// this function is called when an assert fails -void wxOnAssert(const wxChar *szFile, int nLine, const wxChar *szMsg) -{ - // this variable can be set to true to suppress "assert failure" messages - static bool s_bNoAsserts = FALSE; - static bool s_bInAssert = FALSE; // FIXME MT-unsafe - - if ( s_bInAssert ) { - // He-e-e-e-elp!! we're trapped in endless loop - wxTrap(); - - s_bInAssert = FALSE; - - return; - } - - s_bInAssert = TRUE; - - wxChar szBuf[LOG_BUFFER_SIZE]; - - // make life easier for people using VC++ IDE: clicking on the message - // will take us immediately to the place of the failed assert - wxSnprintf(szBuf, WXSIZEOF(szBuf), -#ifdef __VISUALC__ - wxT("%s(%d): assert failed"), -#else // !VC++ - // make the error message more clear for all the others - wxT("Assert failed in file %s at line %d"), -#endif // VC/!VC - szFile, nLine); - - if ( szMsg != NULL ) { - wxStrcat(szBuf, wxT(": ")); - wxStrcat(szBuf, szMsg); - } - else { - wxStrcat(szBuf, wxT(".")); - } - - if ( !s_bNoAsserts ) { - // send it to the normal log destination - wxLogDebug(szBuf); - -#if (wxUSE_GUI && wxUSE_MSGDLG) || defined(__WXMSW__) - // this message is intentionally not translated - it is for - // developpers only - wxStrcat(szBuf, wxT("\nDo you want to stop the program?\nYou can also choose [Cancel] to suppress further warnings.")); - - // use the native message box if available: this is more robust than - // using our own -#if defined(__WXMSW__) && !defined(__WXMICROWIN__) - switch ( ::MessageBox(NULL, szBuf, _T("Debug"), - MB_YESNOCANCEL | MB_ICONSTOP ) ) { - case IDYES: - wxTrap(); - break; - - case IDCANCEL: - s_bNoAsserts = TRUE; - break; - - //case IDNO: nothing to do - } -#else // !MSW - switch ( wxMessageBox(szBuf, wxT("Debug"), - wxYES_NO | wxCANCEL | wxICON_STOP ) ) { - case wxYES: - wxTrap(); - break; - - case wxCANCEL: - s_bNoAsserts = TRUE; - break; - - //case wxNO: nothing to do - } -#endif // GUI or MSW - -#else // !GUI - wxTrap(); -#endif // GUI/!GUI - } - - s_bInAssert = FALSE; -} - -#endif //WXDEBUG - #endif //wxUSE_LOG