X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/807a903e6807ae3e49928bda488a04bc0d832149..4f55a07f9f4c6ba6905aaa8e584e6fb14771d278:/src/common/log.cpp diff --git a/src/common/log.cpp b/src/common/log.cpp index 0f30a9e562..ffeeef2daa 100644 --- a/src/common/log.cpp +++ b/src/common/log.cpp @@ -112,23 +112,9 @@ static inline bool IsLoggingEnabled() // generic log function void wxLogGeneric(wxLogLevel level, const wxChar *szFormat, ...) { -<<<<<<< log.cpp - if ( wxLog::GetActiveTarget() != NULL ) { - wxCRIT_SECT_LOCKER(locker, gs_csLogBuf); - - va_list argptr; - va_start(argptr, szFormat); - wxVsnprintf(s_szBuf, WXSIZEOF(s_szBuf), szFormat, argptr); - va_end(argptr); -======= if ( IsLoggingEnabled() ) { wxCRIT_SECT_LOCKER(locker, gs_csLogBuf); ->>>>>>> 1.93.2.3 -<<<<<<< log.cpp - wxLog::OnLog(level, s_szBuf, time(NULL)); - } -======= va_list argptr; va_start(argptr, szFormat); wxVsnprintf(s_szBuf, WXSIZEOF(s_szBuf), szFormat, argptr); @@ -136,7 +122,6 @@ void wxLogGeneric(wxLogLevel level, const wxChar *szFormat, ...) wxLog::OnLog(level, s_szBuf, time(NULL)); } ->>>>>>> 1.93.2.3 } #define IMPLEMENT_LOG_FUNCTION(level) \ @@ -338,6 +323,16 @@ wxLog *wxLog::SetActiveTarget(wxLog *pLogger) return pOldLogger; } +void wxLog::DontCreateOnDemand() +{ + ms_bAutoCreate = FALSE; + + // this is usually called at the end of the program and we assume that it + // is *always* called at the end - so we free memory here to avoid false + // memory leak reports from wxWin memory tracking code + ClearTraceMasks(); +} + void wxLog::RemoveTraceMask(const wxString& str) { int index = ms_aTraceMasks.Index(str); @@ -345,6 +340,11 @@ void wxLog::RemoveTraceMask(const wxString& str) ms_aTraceMasks.Remove((size_t)index); } +void wxLog::ClearTraceMasks() +{ + ms_aTraceMasks.Clear(); +} + void wxLog::TimeStamp(wxString *str) { if ( ms_timestamp ) @@ -556,10 +556,10 @@ void wxLogStderr::DoLogString(const wxChar *szString, time_t WXUNUSED(t)) // ---------------------------------------------------------------------------- #if wxUSE_STD_IOSTREAM -wxLogStream::wxLogStream(ostream *ostr) +wxLogStream::wxLogStream(wxSTD ostream *ostr) { if ( ostr == NULL ) - m_ostr = &cerr; + m_ostr = &wxSTD cerr; else m_ostr = ostr; } @@ -568,7 +568,7 @@ void wxLogStream::DoLogString(const wxChar *szString, time_t WXUNUSED(t)) { wxString str; TimeStamp(&str); - (*m_ostr) << str << wxConvertWX2MB(szString) << endl; + (*m_ostr) << str << wxConvertWX2MB(szString) << wxSTD endl; } #endif // wxUSE_STD_IOSTREAM @@ -705,8 +705,14 @@ const wxChar *wxSysErrorMsg(unsigned long nErrCode) #ifdef __WXDEBUG__ +// wxASSERT() helper +bool wxAssertIsEqual(int x, int y) +{ + return x == y; +} + // break into the debugger -void Trap() +void wxTrap() { #ifdef __WXMSW__ DebugBreak(); @@ -732,7 +738,7 @@ void wxOnAssert(const wxChar *szFile, int nLine, const wxChar *szMsg) if ( s_bInAssert ) { // He-e-e-e-elp!! we're trapped in endless loop - Trap(); + wxTrap(); s_bInAssert = FALSE; @@ -766,7 +772,7 @@ void wxOnAssert(const wxChar *szFile, int nLine, const wxChar *szMsg) // send it to the normal log destination wxLogDebug(szBuf); -#if wxUSE_GUI || defined(__WXMSW__) +#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.")); @@ -777,7 +783,7 @@ void wxOnAssert(const wxChar *szFile, int nLine, const wxChar *szMsg) switch ( ::MessageBox(NULL, szBuf, _T("Debug"), MB_YESNOCANCEL | MB_ICONSTOP ) ) { case IDYES: - Trap(); + wxTrap(); break; case IDCANCEL: @@ -790,7 +796,7 @@ void wxOnAssert(const wxChar *szFile, int nLine, const wxChar *szMsg) switch ( wxMessageBox(szBuf, wxT("Debug"), wxYES_NO | wxCANCEL | wxICON_STOP ) ) { case wxYES: - Trap(); + wxTrap(); break; case wxCANCEL: @@ -802,7 +808,7 @@ void wxOnAssert(const wxChar *szFile, int nLine, const wxChar *szMsg) #endif // GUI or MSW #else // !GUI - Trap(); + wxTrap(); #endif // GUI/!GUI }