X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/199e91fb675fc0217da99f8b1f829eacbd1c25d9..b7b35e5063b8430324ba2fa05d5e6f58a34dd3b9:/src/common/log.cpp?ds=sidebyside diff --git a/src/common/log.cpp b/src/common/log.cpp index 4c58a331e2..b577f27aef 100644 --- a/src/common/log.cpp +++ b/src/common/log.cpp @@ -159,17 +159,22 @@ IMPLEMENT_LOG_FUNCTION(Message) IMPLEMENT_LOG_FUNCTION(Info) IMPLEMENT_LOG_FUNCTION(Status) +void wxSafeShowMessage(const wxString& title, const wxString& text) +{ +#ifdef __WINDOWS__ + ::MessageBox(NULL, text, title, MB_OK | MB_ICONSTOP); +#else + wxFprintf(stderr, _T("%s: %s\n"), title.c_str(), text.c_str()); +#endif +} + // fatal errors can't be suppressed nor handled by the custom log target and // always terminate the program void wxVLogFatalError(const wxChar *szFormat, va_list argptr) { wxVsnprintf(s_szBuf, s_szBufSize, szFormat, argptr); -#if wxUSE_GUI - wxMessageBox(s_szBuf, _("Fatal Error"), wxID_OK | wxICON_STOP); -#else - wxFprintf(stderr, _("Fatal error: %s\n"), s_szBuf); -#endif + wxSafeShowMessage(_T("Fatal Error"), s_szBuf); abort(); } @@ -764,13 +769,18 @@ void wxLogStream::DoLogString(const wxChar *szString, time_t WXUNUSED(t)) wxLogChain::wxLogChain(wxLog *logger) { + m_bPassMessages = TRUE; + m_logNew = logger; m_logOld = wxLog::SetActiveTarget(this); } wxLogChain::~wxLogChain() { - delete m_logNew; + delete m_logOld; + + if ( m_logNew != this ) + delete m_logNew; } void wxLogChain::SetLog(wxLog *logger) @@ -778,8 +788,6 @@ void wxLogChain::SetLog(wxLog *logger) if ( m_logNew != this ) delete m_logNew; - wxLog::SetActiveTarget(logger); - m_logNew = logger; }