gui: bugfix, catch invalid networks combination crash

We shouldn't crash if a network is set inside
bitcoin.conf and another one is provided as param.
This commit is contained in:
furszy 2022-12-26 11:08:52 -03:00
parent e9262ea32a
commit f4a11d7baf
No known key found for this signature in database
GPG Key ID: 5DD23CCC686AA623

View File

@ -592,14 +592,16 @@ int GuiMain(int argc, char* argv[])
// Gracefully exit if the user cancels // Gracefully exit if the user cancels
if (!Intro::showIfNeeded(did_show_intro, prune_MiB)) return EXIT_SUCCESS; if (!Intro::showIfNeeded(did_show_intro, prune_MiB)) return EXIT_SUCCESS;
/// 6. Determine availability of data directory and parse bitcoin.conf /// 6a. Determine availability of data directory
/// - Do not call gArgs.GetDataDirNet() before this step finishes
if (!CheckDataDirOption()) { if (!CheckDataDirOption()) {
InitError(strprintf(Untranslated("Specified data directory \"%s\" does not exist.\n"), gArgs.GetArg("-datadir", ""))); InitError(strprintf(Untranslated("Specified data directory \"%s\" does not exist.\n"), gArgs.GetArg("-datadir", "")));
QMessageBox::critical(nullptr, PACKAGE_NAME, QMessageBox::critical(nullptr, PACKAGE_NAME,
QObject::tr("Error: Specified data directory \"%1\" does not exist.").arg(QString::fromStdString(gArgs.GetArg("-datadir", "")))); QObject::tr("Error: Specified data directory \"%1\" does not exist.").arg(QString::fromStdString(gArgs.GetArg("-datadir", ""))));
return EXIT_FAILURE; return EXIT_FAILURE;
} }
try {
/// 6b. Parse bitcoin.conf
/// - Do not call gArgs.GetDataDirNet() before this step finishes
if (!gArgs.ReadConfigFiles(error, true)) { if (!gArgs.ReadConfigFiles(error, true)) {
InitError(strprintf(Untranslated("Error reading configuration file: %s\n"), error)); InitError(strprintf(Untranslated("Error reading configuration file: %s\n"), error));
QMessageBox::critical(nullptr, PACKAGE_NAME, QMessageBox::critical(nullptr, PACKAGE_NAME,
@ -614,7 +616,6 @@ int GuiMain(int argc, char* argv[])
// - Needs to be done before createOptionsModel // - Needs to be done before createOptionsModel
// Check for chain settings (Params() calls are only valid after this clause) // Check for chain settings (Params() calls are only valid after this clause)
try {
SelectParams(gArgs.GetChainName()); SelectParams(gArgs.GetChainName());
} catch(std::exception &e) { } catch(std::exception &e) {
InitError(Untranslated(strprintf("%s\n", e.what()))); InitError(Untranslated(strprintf("%s\n", e.what())));