]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/crashrpt.cpp
Use the data scheme to load resources in the WebKitGTK+ implementation, rather than...
[wxWidgets.git] / src / msw / crashrpt.cpp
index 34eba9c5c91044f4dc1dfcdcf30ce04d114cf572..4bf374f676b875104fb1ad972fde62bf6f4187f2 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
-// Name:        msw/crashrpt.cpp
+// Name:        src/msw/crashrpt.cpp
 // Purpose:     code to generate crash dumps (minidumps)
 // Author:      Vadim Zeitlin
 // Modified by:
 // Purpose:     code to generate crash dumps (minidumps)
 // Author:      Vadim Zeitlin
 // Modified by:
@@ -81,7 +81,7 @@ private:
     void Output(const wxChar *format, ...);
 
     // output end of line
     void Output(const wxChar *format, ...);
 
     // output end of line
-    void OutputEndl() { Output(_T("\r\n")); }
+    void OutputEndl() { Output(wxT("\r\n")); }
 
     // the handle of the report file
     HANDLE m_hFile;
 
     // the handle of the report file
     HANDLE m_hFile;
@@ -130,7 +130,9 @@ void wxCrashReportImpl::Output(const wxChar *format, ...)
     DWORD cbWritten;
 
     wxString s = wxString::FormatV(format, argptr);
     DWORD cbWritten;
 
     wxString s = wxString::FormatV(format, argptr);
-    ::WriteFile(m_hFile, s, s.length() * sizeof(wxChar), &cbWritten, 0);
+
+    wxCharBuffer buf(s.mb_str(wxConvUTF8));
+    ::WriteFile(m_hFile, buf.data(), strlen(buf.data()), &cbWritten, 0);
 
     va_end(argptr);
 }
 
     va_end(argptr);
 }
@@ -146,7 +148,7 @@ bool wxCrashReportImpl::Generate(int flags, EXCEPTION_POINTERS *ep)
 
     if ( !ep )
     {
 
     if ( !ep )
     {
-        Output(_T("Context for crash report generation not available."));
+        Output(wxT("Context for crash report generation not available."));
         return false;
     }
 
         return false;
     }
 
@@ -158,14 +160,14 @@ bool wxCrashReportImpl::Generate(int flags, EXCEPTION_POINTERS *ep)
     TCHAR envFlags[64];
     DWORD dwLen = ::GetEnvironmentVariable
                     (
     TCHAR envFlags[64];
     DWORD dwLen = ::GetEnvironmentVariable
                     (
-                        _T("WX_CRASH_FLAGS"),
+                        wxT("WX_CRASH_FLAGS"),
                         envFlags,
                         WXSIZEOF(envFlags)
                     );
 
     int flagsEnv;
     if ( dwLen && dwLen < WXSIZEOF(envFlags) &&
                         envFlags,
                         WXSIZEOF(envFlags)
                     );
 
     int flagsEnv;
     if ( dwLen && dwLen < WXSIZEOF(envFlags) &&
-            wxSscanf(envFlags, _T("%d"), &flagsEnv) == 1 )
+            wxSscanf(envFlags, wxT("%d"), &flagsEnv) == 1 )
     {
         flags = flagsEnv;
     }
     {
         flags = flagsEnv;
     }
@@ -198,8 +200,11 @@ bool wxCrashReportImpl::Generate(int flags, EXCEPTION_POINTERS *ep)
             // the file size is not much bigger than when using MiniDumpNormal
             // if we use the flags below, but the minidump is much more useful
             // as it contains the values of many (but not all) local variables
             // the file size is not much bigger than when using MiniDumpNormal
             // if we use the flags below, but the minidump is much more useful
             // as it contains the values of many (but not all) local variables
-            dumpFlags = (MINIDUMP_TYPE)(MiniDumpScanMemory |
-                                        MiniDumpWithIndirectlyReferencedMemory);
+            dumpFlags = (MINIDUMP_TYPE)(MiniDumpScanMemory
+#if _MSC_VER > 1300
+                                        |MiniDumpWithIndirectlyReferencedMemory
+#endif
+                                        );
         }
 
         if ( !wxDbgHelpDLL::MiniDumpWriteDump
         }
 
         if ( !wxDbgHelpDLL::MiniDumpWriteDump
@@ -213,7 +218,7 @@ bool wxCrashReportImpl::Generate(int flags, EXCEPTION_POINTERS *ep)
                 NULL                        // no callbacks
               ) )
         {
                 NULL                        // no callbacks
               ) )
         {
-            Output(_T("MiniDumpWriteDump() failed."));
+            Output(wxT("MiniDumpWriteDump() failed."));
 
             return false;
         }
 
             return false;
         }
@@ -222,14 +227,14 @@ bool wxCrashReportImpl::Generate(int flags, EXCEPTION_POINTERS *ep)
     }
     else // dbghelp.dll couldn't be loaded
     {
     }
     else // dbghelp.dll couldn't be loaded
     {
-        Output(wxDbgHelpDLL::GetErrorMessage());
+        Output(wxT("%s"), wxDbgHelpDLL::GetErrorMessage().c_str());
     }
 #else // !wxUSE_DBGHELP
     wxUnusedVar(flags);
     wxUnusedVar(ep);
 
     }
 #else // !wxUSE_DBGHELP
     wxUnusedVar(flags);
     wxUnusedVar(ep);
 
-    Output(_T("Support for crash report generation was not included ")
-           _T("in this wxWidgets version."));
+    Output(wxT("Support for crash report generation was not included ")
+           wxT("in this wxWidgets version."));
 #endif // wxUSE_DBGHELP/!wxUSE_DBGHELP
 
     return false;
 #endif // wxUSE_DBGHELP/!wxUSE_DBGHELP
 
     return false;
@@ -240,14 +245,13 @@ bool wxCrashReportImpl::Generate(int flags, EXCEPTION_POINTERS *ep)
 // ----------------------------------------------------------------------------
 
 /* static */
 // ----------------------------------------------------------------------------
 
 /* static */
-void wxCrashReport::SetFileName(const wxChar *filename)
+void wxCrashReport::SetFileName(const wxString& filename)
 {
 {
-    wxStrncpy(gs_reportFilename, filename, WXSIZEOF(gs_reportFilename) - 1);
-    gs_reportFilename[WXSIZEOF(gs_reportFilename) - 1] = _T('\0');
+    wxStrlcpy(gs_reportFilename, filename.wx_str(), WXSIZEOF(gs_reportFilename));
 }
 
 /* static */
 }
 
 /* static */
-const wxChar *wxCrashReport::GetFileName()
+wxString wxCrashReport::GetFileName()
 {
     return gs_reportFilename;
 }
 {
     return gs_reportFilename;
 }
@@ -288,7 +292,7 @@ wxCrashContext::wxCrashContext(_EXCEPTION_POINTERS *ep)
 
     if ( !ep )
     {
 
     if ( !ep )
     {
-        wxCHECK_RET( wxGlobalSEInformation, _T("no exception info available") );
+        wxCHECK_RET( wxGlobalSEInformation, wxT("no exception info available") );
         ep = wxGlobalSEInformation;
     }
 
         ep = wxGlobalSEInformation;
     }
 
@@ -326,7 +330,7 @@ wxString wxCrashContext::GetExceptionString() const
 {
     wxString s;
 
 {
     wxString s;
 
-    #define CASE_EXCEPTION( x ) case EXCEPTION_##x: s = _T(#x); break
+    #define CASE_EXCEPTION( x ) case EXCEPTION_##x: s = wxT(#x); break
 
     switch ( code )
     {
 
     switch ( code )
     {
@@ -359,7 +363,7 @@ wxString wxCrashContext::GetExceptionString() const
                     (
                      FORMAT_MESSAGE_IGNORE_INSERTS |
                      FORMAT_MESSAGE_FROM_HMODULE,
                     (
                      FORMAT_MESSAGE_IGNORE_INSERTS |
                      FORMAT_MESSAGE_FROM_HMODULE,
-                     ::GetModuleHandle(_T("NTDLL.DLL")),
+                     ::GetModuleHandle(wxT("NTDLL.DLL")),
                      code,
                      0,
                      wxStringBuffer(s, 1024),
                      code,
                      0,
                      wxStringBuffer(s, 1024),
@@ -367,7 +371,7 @@ wxString wxCrashContext::GetExceptionString() const
                      0
                     ) )
             {
                      0
                     ) )
             {
-                s.Printf(_T("UNKNOWN_EXCEPTION(%d)"), code);
+                s.Printf(wxT("UNKNOWN_EXCEPTION(%d)"), code);
             }
     }
 
             }
     }