From 8d0827dcd089326dc125bb60cd227551734f853e Mon Sep 17 00:00:00 2001 From: auria Date: Sun, 28 Feb 2010 01:06:41 +0000 Subject: [PATCH] Perform sanity checks when loading challenges git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@4872 178a84e3-b1eb-0310-8ba1-8eac791a3b58 --- src/challenges/challenge_data.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/challenges/challenge_data.cpp b/src/challenges/challenge_data.cpp index 5c6ecf92c..224ba47c2 100644 --- a/src/challenges/challenge_data.cpp +++ b/src/challenges/challenge_data.cpp @@ -116,14 +116,24 @@ ChallengeData::ChallengeData(const std::string& filename) root->get("energy", &m_energy ); // This is optional if(m_major==RaceManager::MAJOR_MODE_SINGLE) { - if(!root->get("track", &m_track_name )) error("track"); - if(!root->get("laps", &m_num_laps ) && - m_minor!=RaceManager::MINOR_MODE_FOLLOW_LEADER) + if (!root->get("track", &m_track_name )) + { + error("track"); + } + if (track_manager->getTrack(m_track_name) == NULL) + { + error("track"); + } + + if (!root->get("laps", &m_num_laps ) && m_minor!=RaceManager::MINOR_MODE_FOLLOW_LEADER) + { error("laps"); + } } else // GP { - if(!root->get("gp", &m_gp_id )) error("gp"); + if (!root->get("gp", &m_gp_id )) error("gp"); + if (grand_prix_manager->getGrandPrix(m_gp_id) == NULL) error("gp"); } getUnlocks(root, "unlock-track", UNLOCK_TRACK); @@ -149,8 +159,7 @@ void ChallengeData::error(const char *id) const std::cerr << "ChallengeData : " << msg.str() << std::endl; - // FIXME: disable this till all tracks are converted - // FIXME throw std::runtime_error(msg.str()); + throw std::runtime_error(msg.str()); } // error // ----------------------------------------------------------------------------