fix more possible Profile crashes.

(dereferencing null pointer baaaad....)
This commit is contained in:
Thad Ward
2004-02-09 20:46:39 +00:00
parent 4e8d535eb3
commit d5bd9327af
+21 -18
View File
@@ -1091,6 +1091,8 @@ void GameState::GetRankingFeats( PlayerNumber pn, vector<RankingFeats> &asFeatsO
if( !IsHumanPlayer(pn) ) if( !IsHumanPlayer(pn) )
return; return;
Profile *pProf = PROFILEMAN->GetProfile(pn);
CHECKPOINT_M(ssprintf("PlayMode %i",this->m_PlayMode)); CHECKPOINT_M(ssprintf("PlayMode %i",this->m_PlayMode));
switch( this->m_PlayMode ) switch( this->m_PlayMode )
{ {
@@ -1157,10 +1159,9 @@ void GameState::GetRankingFeats( PlayerNumber pn, vector<RankingFeats> &asFeatsO
} }
// Find Personal Records // Find Personal Records
Profile *prof = PROFILEMAN->GetProfile(pn); if( pProf )
if( prof )
{ {
HighScoreList &hsl = prof->GetStepsHighScoreList(pSteps); HighScoreList &hsl = pProf->GetStepsHighScoreList(pSteps);
for( j=0; j<hsl.vHighScores.size(); j++ ) for( j=0; j<hsl.vHighScores.size(); j++ )
{ {
HighScore &hs = hsl.vHighScores[j]; HighScore &hs = hsl.vHighScores[j];
@@ -1219,21 +1220,24 @@ void GameState::GetRankingFeats( PlayerNumber pn, vector<RankingFeats> &asFeatsO
for( i=0; i<NUM_RANKING_CATEGORIES; i++ ) for( i=0; i<NUM_RANKING_CATEGORIES; i++ )
{ {
RankingCategory rc = (RankingCategory)i; RankingCategory rc = (RankingCategory)i;
HighScoreList &hsl = PROFILEMAN->GetProfile(pn)->GetCategoryHighScoreList( nt, rc ); if( pProf )
for( unsigned j=0; j<hsl.vHighScores.size(); j++ )
{ {
HighScore &hs = hsl.vHighScores[j]; HighScoreList &hsl = pProf->GetCategoryHighScoreList( nt, rc );
if( hs.sName != RANKING_TO_FILL_IN_MARKER[pn] ) for( unsigned j=0; j<hsl.vHighScores.size(); j++ )
continue; {
HighScore &hs = hsl.vHighScores[j];
if( hs.sName != RANKING_TO_FILL_IN_MARKER[pn] )
continue;
RankingFeats feat; RankingFeats feat;
feat.Type = RankingFeats::CATEGORY; feat.Type = RankingFeats::CATEGORY;
feat.Feat = ssprintf("PR #%d in Type %c (%d)", j+1, 'A'+i, stats.iMeter[pn] ); feat.Feat = ssprintf("PR #%d in Type %c (%d)", j+1, 'A'+i, stats.iMeter[pn] );
feat.pStringToFill = &hs.sName; feat.pStringToFill = &hs.sName;
feat.grade = GRADE_NO_DATA; feat.grade = GRADE_NO_DATA;
feat.iScore = (int) hs.iScore; feat.iScore = (int) hs.iScore;
feat.fPercentDP = (float) hs.fPercentDP; feat.fPercentDP = (float) hs.fPercentDP;
asFeatsOut.push_back( feat ); asFeatsOut.push_back( feat );
}
} }
} }
} }
@@ -1276,8 +1280,7 @@ void GameState::GetRankingFeats( PlayerNumber pn, vector<RankingFeats> &asFeatsO
// Find Personal Records // Find Personal Records
if( PROFILEMAN->IsUsingProfile( pn ) ) if( PROFILEMAN->IsUsingProfile( pn ) )
{ {
Profile* pProfile = PROFILEMAN->GetProfile( pn ); HighScoreList &hsl = pProf->GetCourseHighScoreList( pCourse, nt );
HighScoreList &hsl = pProfile->GetCourseHighScoreList( pCourse, nt );
for( unsigned i=0; i<hsl.vHighScores.size(); i++ ) for( unsigned i=0; i<hsl.vHighScores.size(); i++ )
{ {
HighScore& hs = hsl.vHighScores[i]; HighScore& hs = hsl.vHighScores[i];