summaryrefslogtreecommitdiff
path: root/Source/Core/Common/MsgHandler.cpp
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2021-08-29 01:53:12 +0200
committerLéo Lam <leo@leolam.fr>2021-08-29 02:02:07 +0200
commite091c2e8173343c5ab8833a700bf4c6f4d15a5d2 (patch)
tree21fbb9184f46d714c0ae494405eb58dad7f60107 /Source/Core/Common/MsgHandler.cpp
parent48161953662b9d77c4ece357f6f16814dd0c5f58 (diff)
Add an option to abort when a panic alert occurs
Prompted by https://dolphin.ci/#/builders/24/builds/985 A 1-character typo in a recent PR caused FifoCI builds to break horribly and spew millions of panic alerts until buildbot crashed. This PR adds a new config option -- defaulting to off -- that allows Dolphin to abort early on when a panic alert occurs instead of continuing forever.
Diffstat (limited to 'Source/Core/Common/MsgHandler.cpp')
-rw-r--r--Source/Core/Common/MsgHandler.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/Source/Core/Common/MsgHandler.cpp b/Source/Core/Common/MsgHandler.cpp
index fa7d246a9d..2cdccd59b7 100644
--- a/Source/Core/Common/MsgHandler.cpp
+++ b/Source/Core/Common/MsgHandler.cpp
@@ -4,6 +4,7 @@
#include "Common/MsgHandler.h"
#include <cstdarg>
+#include <cstdlib>
#include <string>
#ifdef _WIN32
@@ -51,6 +52,7 @@ std::string DefaultStringTranslator(const char* text)
MsgAlertHandler s_msg_handler = DefaultMsgHandler;
StringTranslator s_str_translator = DefaultStringTranslator;
bool s_alert_enabled = true;
+bool s_abort_on_panic_alert = false;
const char* GetCaption(MsgType style)
{
@@ -94,6 +96,11 @@ void SetEnableAlert(bool enable)
s_alert_enabled = enable;
}
+void SetAbortOnPanicAlert(bool should_abort)
+{
+ s_abort_on_panic_alert = should_abort;
+}
+
std::string GetStringT(const char* string)
{
return s_str_translator(string);
@@ -114,6 +121,12 @@ bool MsgAlert(bool yes_no, MsgType style, const char* format, ...)
ERROR_LOG_FMT(MASTER_LOG, "{}: {}", caption, buffer);
+ // Panic alerts.
+ if (style == MsgType::Warning && s_abort_on_panic_alert)
+ {
+ std::abort();
+ }
+
// Don't ignore questions, especially AskYesNo, PanicYesNo could be ignored
if (s_msg_handler != nullptr &&
(s_alert_enabled || style == MsgType::Question || style == MsgType::Critical))