From bf5f700f9ebb4d2ed1686b34f01e610229c24356 Mon Sep 17 00:00:00 2001 From: ztjohnst Date: Fri, 31 Jul 2020 22:44:56 -0400 Subject: [PATCH] [Base] Fix invalid cvar args causing silent exit. [Base] Fix invalid cvar arguments causing Xenia to silently exit. --- src/xenia/base/cvar.cc | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/xenia/base/cvar.cc b/src/xenia/base/cvar.cc index bd6b0c254..2b9856a23 100644 --- a/src/xenia/base/cvar.cc +++ b/src/xenia/base/cvar.cc @@ -14,6 +14,9 @@ #define UTF_CPP_CPLUSPLUS 201703L #include "third_party/utfcpp/source/utf8.h" +#include "xenia/base/logging.h" +#include "xenia/base/main.h" + namespace utfcpp = utf8; using u8_citer = utfcpp::iterator; @@ -61,7 +64,12 @@ void ParseLaunchArguments(int& argc, char**& argv, auto result = options.parse(argc, argv); if (result.count("help")) { - PrintHelpAndExit(); + if (xe::has_console_attached()) { + PrintHelpAndExit(); + } else { + xe::ShowInfoMessageBox(options.help({""})); + exit(0); + } } for (auto& it : *CmdVars) { @@ -78,8 +86,15 @@ void ParseLaunchArguments(int& argc, char**& argv, } } } catch (const cxxopts::OptionException& e) { - std::cout << e.what() << std::endl; - PrintHelpAndExit(); + if (xe::has_console_attached()) { + std::cout << e.what() << std::endl; + PrintHelpAndExit(); + } else { + std::string m = + "Invalid launch options were given.\n" + options.help({""}); + xe::ShowErrorMessageBox(m); + exit(0); + } } }