]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/crashrpt.cpp
Better fix
[wxWidgets.git] / src / msw / crashrpt.cpp
index 34eba9c5c91044f4dc1dfcdcf30ce04d114cf572..d2a303abbe0dffa90cac70c6ce1042c5f2167dee 100644 (file)
@@ -130,7 +130,9 @@ void wxCrashReportImpl::Output(const wxChar *format, ...)
     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);
 }
@@ -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
-            dumpFlags = (MINIDUMP_TYPE)(MiniDumpScanMemory |
-                                        MiniDumpWithIndirectlyReferencedMemory);
+            dumpFlags = (MINIDUMP_TYPE)(MiniDumpScanMemory
+#if _MSC_VER > 1300
+                                        |MiniDumpWithIndirectlyReferencedMemory
+#endif
+                                        );
         }
 
         if ( !wxDbgHelpDLL::MiniDumpWriteDump
@@ -222,7 +227,7 @@ bool wxCrashReportImpl::Generate(int flags, EXCEPTION_POINTERS *ep)
     }
     else // dbghelp.dll couldn't be loaded
     {
-        Output(wxDbgHelpDLL::GetErrorMessage());
+        Output(_T("%s"), wxDbgHelpDLL::GetErrorMessage().c_str());
     }
 #else // !wxUSE_DBGHELP
     wxUnusedVar(flags);