diff --git a/stepmania/src/OptionRow.cpp b/stepmania/src/OptionRow.cpp index d3e3ea8bce..dd4e73b907 100644 --- a/stepmania/src/OptionRow.cpp +++ b/stepmania/src/OptionRow.cpp @@ -737,15 +737,16 @@ void OptionRow::HandleMessage( const CString& sMessage ) #define INSERT_ONE_BOOL_AT_FRONT_IF_NEEDED( vbSelected ) \ if( GetFirstItemGoesDown() ) \ vbSelected.insert( vbSelected.begin(), false ); -static void VerifySelected( SelectType st, const vector &vbSelected ) +static void VerifySelected( SelectType st, const vector &vbSelected, const CString &sName ) { int iNumSelected = 0; if( st == SELECT_ONE ) { + ASSERT_M( vbSelected.size() > 0, ssprintf("%s: %i/%i", sName.c_str(), iNumSelected, vbSelected.size()) ); for( unsigned e = 0; e < vbSelected.size(); ++e ) if( vbSelected[e] ) iNumSelected++; - ASSERT( iNumSelected == 1 ); + ASSERT_M( iNumSelected == 1, ssprintf("%s: %i/%i", sName.c_str(), iNumSelected, vbSelected.size()) ); } } @@ -763,7 +764,7 @@ void OptionRow::ImportOptions( PlayerNumber pn ) ERASE_ONE_BOOL_AT_FRONT_IF_NEEDED( m_vbSelected[pn] ); m_pHand->ImportOption( m_RowDef, pn, m_vbSelected[pn] ); INSERT_ONE_BOOL_AT_FRONT_IF_NEEDED( m_vbSelected[pn] ); - VerifySelected( m_RowDef.selectType, m_vbSelected[pn] ); + VerifySelected( m_RowDef.selectType, m_vbSelected[pn], m_RowDef.name ); } void OptionRow::ImportOptions() @@ -781,7 +782,7 @@ int OptionRow::ExportOptions( PlayerNumber pn ) int iChangeMask = 0; - VerifySelected( m_RowDef.selectType, m_vbSelected[pn] ); + VerifySelected( m_RowDef.selectType, m_vbSelected[pn], m_RowDef.name ); ASSERT( m_vbSelected[pn].size() == m_RowDef.choices.size() ); ERASE_ONE_BOOL_AT_FRONT_IF_NEEDED( m_vbSelected[pn] ); iChangeMask |= m_pHand->ExportOption( m_RowDef, pn, m_vbSelected[pn] ); diff --git a/stepmania/src/OptionRowHandler.cpp b/stepmania/src/OptionRowHandler.cpp index 45dcee064d..e89d30f8b1 100644 --- a/stepmania/src/OptionRowHandler.cpp +++ b/stepmania/src/OptionRowHandler.cpp @@ -190,6 +190,12 @@ public: } } + if( UseFallbackOption && FallbackOption == -1 ) + { + LOG->Warn( "No options in row \"%s\" were selected, and no fallback row found; selected entry 0", m_sName.c_str() ); + FallbackOption = 0; + } + if( def.selectType == SELECT_ONE && UseFallbackOption && FallbackOption != -1 )