From a3117328e943c23cf542059386e2ce53a0e796fe Mon Sep 17 00:00:00 2001 From: Nils Wallménius Date: Tue, 23 Oct 2007 15:00:45 +0000 Subject: Fix vroken logic that _could_ lead to memory corruption though it was very unlikely git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15281 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/midi/midiplay.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'apps') diff --git a/apps/plugins/midi/midiplay.c b/apps/plugins/midi/midiplay.c index 325d90c375..974dc99069 100644 --- a/apps/plugins/midi/midiplay.c +++ b/apps/plugins/midi/midiplay.c @@ -89,7 +89,7 @@ PLUGIN_IRAM_DECLARE struct MIDIfile * mf IBSS_ATTR; -int numberOfSamples IBSS_ATTR; +int numberOfSamples IBSS_ATTR; /* the number of samples in the current tick */ long bpm IBSS_ATTR; int32_t gmbuf[BUF_SIZE*NBUF]; @@ -150,7 +150,7 @@ bool lastswap=1; static inline void synthbuf(void) { int32_t *outptr; - int i; + int i=BUF_SIZE; #ifndef SYNC if(lastswap==swap) return; @@ -162,7 +162,7 @@ static inline void synthbuf(void) #endif /* synth samples for as many whole ticks as we can fit in the buffer */ - for(i=0; i < BUF_SIZE/numberOfSamples; i++) + for(; i >= numberOfSamples; i -= numberOfSamples) { synthSamples((int32_t*)outptr, numberOfSamples); outptr += numberOfSamples; @@ -171,7 +171,7 @@ static inline void synthbuf(void) } /* how many samples did we write to the buffer? */ - samples_in_buf = BUF_SIZE-(BUF_SIZE%numberOfSamples); + samples_in_buf = BUF_SIZE-i; } -- cgit v1.2.3