From e40d268214a9a4e6394273b1e75e3db2cde0cb22 Mon Sep 17 00:00:00 2001 From: Bart Trzynadlowski Date: Fri, 31 Mar 2017 04:44:45 +0000 Subject: [PATCH] Warn about parent ROM sets having parent defined (not allowed) --- Src/GameLoader.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Src/GameLoader.cpp b/Src/GameLoader.cpp index 9aff898..bb374c3 100644 --- a/Src/GameLoader.cpp +++ b/Src/GameLoader.cpp @@ -1,9 +1,6 @@ /* * TODO: * ----- - * - If no complete game found, print missing files (because this error is very - * confusing). - * - Print error if parent ROM set also has parent defined. * - Special case parent and child in same zip (when multiple complete games, and selected is parent, look for child, else if child is chosen, look for parent @@ -556,12 +553,20 @@ bool GameLoader::Load(Game *game, ROMSet *rom_set, const std::string &zipfilenam std::string parent_zipfilename = StripFilename(zipfilename) + game->parent + ".zip"; if (LoadZipArchive(&zip2, parent_zipfilename)) { - ErrorLog("Could not load parent ROM set of '%s' from '%s'.", game->name, parent_zipfilename); + ErrorLog("Could not load parent ROM set of '%s' from '%s'.", game->name.c_str(), parent_zipfilename.c_str()); return true; } parent_zip = &zip2; } } + + // Sanity check: a parent set should not itself have a parent + if (!game->parent.empty()) + { + auto it = m_game_info_by_game.find(game->parent); + if (it != m_game_info_by_game.end() && !it->second.parent.empty()) + ErrorLog("Parent ROM set '%s' also has parent defined in '%s', which is invalid and ignored.", game->parent.c_str(), m_xml_filename.c_str()); + } // Load bool error = LoadROMs(rom_set, game->name, &zip, game->parent, parent_zip);