diff --git a/base/commandLine.cpp b/base/commandLine.cpp index b273e50f811..985ef8b3cbb 100644 --- a/base/commandLine.cpp +++ b/base/commandLine.cpp @@ -642,7 +642,23 @@ bool processSettings(Common::String &command, Common::StringMap &settings) { if (!command.empty()) { GameDescriptor gd = Base::findGame(command); if (ConfMan.hasGameDomain(command) || !gd.gameid().empty()) { + bool idCameFromCommandLine = false; + + // WORKAROUND: Fix for bug #1719463: "DETECTOR: Launching + // undefined target adds launcher entry" + // + // We designate gameids which come strictly from command line + // so AdvancedDetector will not save config file with invalid + // gameid in case target autoupgrade was performed + if (!ConfMan.hasGameDomain(command)) { + idCameFromCommandLine = true; + } + ConfMan.setActiveDomain(command); + + if (idCameFromCommandLine) + ConfMan.set("id_came_from_command_line", "1"); + } else { usage("Unrecognized game target '%s'", command.c_str()); } diff --git a/common/advancedDetector.cpp b/common/advancedDetector.cpp index da65c304113..f0f77ee26ef 100644 --- a/common/advancedDetector.cpp +++ b/common/advancedDetector.cpp @@ -212,7 +212,12 @@ PluginError detectGameForEngineCreation( ConfMan.set("platform", Common::getPlatformCode(o->platform)); warning("Target upgraded from %s to %s", o->from, o->to); - ConfMan.flushToDisk(); + + if (ConfMan.hasKey("id_came_from_command_line")) { + warning("Target came from command line. Skipping save"); + } else { + ConfMan.flushToDisk(); + } break; } }