|
From: rainbyte <rai...@us...> - 2012-07-17 10:46:36
|
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Feb 12 04:00:42 2012 +0200
Fix bad_alloc crash on some songs (due to vocal track endTime being NaN). Needs testing.
---
game/engine.hh | 11 +++++------
1 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/game/engine.hh b/game/engine.hh
index 7ebeeb6..5fcb10b 100644
--- a/game/engine.hh
+++ b/game/engine.hh
@@ -31,12 +31,11 @@ class Engine {
template <typename FwdIt> Engine(Audio& audio, VocalTrackPtrs vocals, FwdIt anBegin, FwdIt anEnd, Database& database):
m_audio(audio), m_time(), m_quit(), m_database(database)
{
- if (vocals.empty())
- throw std::runtime_error("Engine needs at least one vocal track");
- // Remove unsensibly long tracks
- for (VocalTrackPtrs::iterator it = vocals.begin(); it != vocals.end(); )
- if (!(*it) || (*it)->endTime > 10000.0) it = vocals.erase(it);
- else ++it;
+ if (vocals.empty()) throw std::runtime_error("Engine needs at least one vocal track");
+ // Remove unsensibly long tracks (also NaN)
+ for (VocalTrackPtrs::iterator it = vocals.begin(); it != vocals.end(); ) {
+ if ((*it) && (*it)->endTime < 10000.0) ++it; else it = vocals.erase(it);
+ }
// Clear old player information
m_database.cur.clear();
m_database.scores.clear();
|