diff --git a/stepmania/src/NoteData.cpp b/stepmania/src/NoteData.cpp index c5cb87bdac..3737eace3f 100644 --- a/stepmania/src/NoteData.cpp +++ b/stepmania/src/NoteData.cpp @@ -917,6 +917,8 @@ void NoteData::_all_tracks_iterator::Find() { int iMinRow = m_iEndRow+1; + // If no notes can be found in the range, m_iTrack will stay -1 and IsAtEnd() will return true. + m_iTrack = -1; for( int iTrack = 0; iTrack < m_NoteData.GetNumTracks(); ++iTrack ) { iter &i = m_vIters[iTrack]; diff --git a/stepmania/src/NoteData.h b/stepmania/src/NoteData.h index 25d54ea338..c932e661ec 100644 --- a/stepmania/src/NoteData.h +++ b/stepmania/src/NoteData.h @@ -44,7 +44,7 @@ public: _all_tracks_iterator operator++( int dummy ); // postincrement inline int Track() const { return m_iTrack; } inline int Row() const { return m_vIters[m_iTrack]->first; } - inline bool IsAtEnd() const { return m_vIters[m_iTrack] == m_NoteData.end( m_iTrack ) || Row() > m_iEndRow; } + inline bool IsAtEnd() const { return m_iTrack == -1; } inline TN &operator*() { DEBUG_ASSERT( !IsAtEnd() ); return m_vIters[m_iTrack]->second; } inline TN *operator->() { DEBUG_ASSERT( !IsAtEnd() ); return &m_vIters[m_iTrack]->second; } inline const TN &operator*() const { DEBUG_ASSERT( !IsAtEnd() ); return m_vIters[m_iTrack]->second; }