From 192ea8734afa50a804a4c6b571fe4d99c79e9b12 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Mon, 5 Jan 2004 20:09:59 +0000 Subject: [PATCH] don't assume ss.iMeter[p] is clamped to 1..MAX_METER+1 debug --- stepmania/src/GameState.cpp | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index f7cd21967e..b681bca37f 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -168,6 +168,14 @@ void GameState::BeginGame() m_iNumTimesThroughAttract = 0; } +void CheckStageStats( const StageStats &ss, int p ) +{ + RAGE_ASSERT_M( ss.playMode < NUM_PLAY_MODES, ssprintf("%i", ss.playMode) ); + RAGE_ASSERT_M( ss.style < NUM_STYLES, ssprintf("%i", ss.style) ); + RAGE_ASSERT_M( ss.pSteps[p]->GetDifficulty() < NUM_DIFFICULTIES, ssprintf("%i", ss.pSteps[p]->GetDifficulty()) ); + RAGE_ASSERT_M( ss.iMeter[p] < MAX_METER+1, ssprintf("%i", ss.iMeter[p]) ); +} + void GameState::EndGame() { // Update profile stats @@ -188,19 +196,25 @@ void GameState::EndGame() pMachineProfile->m_iTotalPlays++; pMachineProfile->m_iCurrentCombo = 0; + CHECKPOINT; for( int p=0; pm_iNumSongsPlayedByPlayMode[ss.playMode]++; pMachineProfile->m_iNumSongsPlayedByStyle[ss.style]++; pMachineProfile->m_iNumSongsPlayedByDifficulty[ss.pSteps[p]->GetDifficulty()]++; - pMachineProfile->m_iNumSongsPlayedByMeter[ss.iMeter[p]]++; + int iMeter = clamp( ss.iMeter[p], 0, MAX_METER ); + pMachineProfile->m_iNumSongsPlayedByMeter[ iMeter ]++; } Profile* pPlayerProfile = PROFILEMAN->GetProfile( (PlayerNumber)p ); @@ -217,15 +231,21 @@ void GameState::EndGame() for( i=0; im_iNumSongsPlayedByPlayMode[ss.playMode]++; pPlayerProfile->m_iNumSongsPlayedByStyle[ss.style]++; pPlayerProfile->m_iNumSongsPlayedByDifficulty[ss.pSteps[p]->GetDifficulty()]++; - pPlayerProfile->m_iNumSongsPlayedByMeter[ss.iMeter[p]]++; + int iMeter = clamp( ss.iMeter[p], 0, MAX_METER ); + pPlayerProfile->m_iNumSongsPlayedByMeter[iMeter]++; } } + CHECKPOINT; MEMCARDMAN->FlushAllDisks(); } + CHECKPOINT; BOOKKEEPER->WriteToDisk(); PROFILEMAN->SaveMachineScoresToDisk();