Don't use CRT in exception handler code (#86). r=bryner

http://groups.google.com/group/airbag-dev/browse_thread/thread/f671277ebd6ea7fd


git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@73 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
mmentovai 2006-11-28 19:47:44 +00:00
parent 373c49b416
commit ed61ae0bbd
2 changed files with 14 additions and 8 deletions

View file

@ -173,14 +173,9 @@ bool ExceptionHandler::WriteMinidump(const wstring &dump_path,
bool ExceptionHandler::WriteMinidumpWithException(DWORD requesting_thread_id,
EXCEPTION_POINTERS *exinfo) {
wchar_t dump_file_name[MAX_PATH];
WindowsStringUtils::safe_swprintf(dump_file_name, MAX_PATH, L"%s\\%s.dmp",
dump_path_.c_str(),
next_minidump_id_.c_str());
bool success = false;
if (minidump_write_dump_) {
HANDLE dump_file = CreateFile(dump_file_name,
HANDLE dump_file = CreateFile(next_minidump_path_.c_str(),
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
@ -239,6 +234,12 @@ void ExceptionHandler::UpdateNextID() {
GUID id;
CoCreateGuid(&id);
next_minidump_id_ = GUIDString::GUIDToWString(&id);
wchar_t minidump_path[MAX_PATH];
WindowsStringUtils::safe_swprintf(minidump_path, MAX_PATH, L"%s\\%s.dmp",
dump_path_.c_str(),
next_minidump_id_.c_str());
next_minidump_path_ = minidump_path;
}
} // namespace google_airbag

View file

@ -93,7 +93,10 @@ class ExceptionHandler {
// Get and set the minidump path.
wstring dump_path() const { return dump_path_; }
void set_dump_path(const wstring &dump_path) { dump_path_ = dump_path; }
void set_dump_path(const wstring &dump_path) {
dump_path_ = dump_path;
UpdateNextID(); // Necessary to put dump_path_ in next_minidump_path_.
}
// Writes a minidump immediately. This can be used to capture the
// execution state independently of a crash. Returns true on success.
@ -140,7 +143,8 @@ class ExceptionHandler {
bool WriteMinidumpWithException(DWORD requesting_thread_id,
EXCEPTION_POINTERS *exinfo);
// Generates a new ID and stores it in next_minidump_id_.
// Generates a new ID and stores it in next_minidump_id_, and stores the
// path of the next minidump to be written in next_minidump_path_.
void UpdateNextID();
MinidumpCallback callback_;
@ -148,6 +152,7 @@ class ExceptionHandler {
wstring dump_path_;
wstring next_minidump_id_;
wstring next_minidump_path_;
HMODULE dbghelp_module_;
MiniDumpWriteDump_type minidump_write_dump_;