diff --git a/ChangeLog b/ChangeLog index ddf69568cc..7bd2dabbac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-10-30 Tobias Doerffel + + * src/core/note_play_handle.cpp: + fixed crash in case of framesLeft() being less or equal zero while + instrument::playNote is being called (e.g. when decreasing release + while a note is active) + 2007-10-04 Javier Serrano Polo * configure.in: diff --git a/configure.in b/configure.in index cb035d7a8f..c72217b408 100644 --- a/configure.in +++ b/configure.in @@ -2,8 +2,8 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.50) -AC_INIT(lmms, 0.4.0-svn20071004, lmms-devel/at/lists/dot/sf/dot/net) -AM_INIT_AUTOMAKE(lmms, 0.4.0-svn20071004) +AC_INIT(lmms, 0.4.0-svn20071030, lmms-devel/at/lists/dot/sf/dot/net) +AM_INIT_AUTOMAKE(lmms, 0.4.0-svn20071030) AM_CONFIG_HEADER(config.h) diff --git a/src/core/note_play_handle.cpp b/src/core/note_play_handle.cpp index 6e1f3f8708..0aaed5906e 100644 --- a/src/core/note_play_handle.cpp +++ b/src/core/note_play_handle.cpp @@ -169,10 +169,16 @@ void notePlayHandle::play( bool _try_parallelizing ) >= m_frames ) { noteOff( m_frames - m_totalFramesPlayed ); - } + } - // play note! - m_instrumentTrack->playNote( this, _try_parallelizing ); + // under some circumstances we're called even if there's nothing to play + // therefore do an additional check which fixes crash e.g. when + // decreasing release of an instrument-track while the note is active + if( framesLeft() > 0 ) + { + // play note! + m_instrumentTrack->playNote( this, _try_parallelizing ); + } if( m_released == TRUE ) {