Index: chrome/common/logging_chrome.cc |
diff --git a/chrome/common/logging_chrome.cc b/chrome/common/logging_chrome.cc |
index e9e51b130ea2b85aa63275000f81fbe022f939cd..6a5d7f88ee0674418f30f65cbb50e248045e7bbb 100644 |
--- a/chrome/common/logging_chrome.cc |
+++ b/chrome/common/logging_chrome.cc |
@@ -69,6 +69,7 @@ namespace { |
// When true, this means that error dialogs should not be shown. |
bool dialogs_are_suppressed_ = false; |
+logging::ScopedLogAssertHandler* assert_handler_ = nullptr; |
// This should be true for exactly the period between the end of |
// InitChromeLogging() and the beginning of CleanupChromeLogging(). |
@@ -92,7 +93,10 @@ const GUID kChromeTraceProviderName = { |
// silenced. To record a new error, pass the log string associated |
// with that error in the str parameter. |
MSVC_DISABLE_OPTIMIZE(); |
-void SilentRuntimeAssertHandler(const std::string& str) { |
+void SilentRuntimeAssertHandler(const char* file, |
+ int line, |
+ const base::StringPiece message, |
+ const base::StringPiece stack_trace) { |
base::debug::BreakDebugger(); |
} |
MSVC_ENABLE_OPTIMIZE(); |
@@ -103,7 +107,8 @@ void SuppressDialogs() { |
if (dialogs_are_suppressed_) |
return; |
- logging::SetLogAssertHandler(SilentRuntimeAssertHandler); |
+ assert_handler_ = new logging::ScopedLogAssertHandler( |
+ base::Bind(SilentRuntimeAssertHandler)); |
#if defined(OS_WIN) |
UINT new_flags = SEM_FAILCRITICALERRORS | |