From 7028972f5995f3f092c9b865e7009e8ef5516ffb Mon Sep 17 00:00:00 2001 From: Chris Moeller Date: Wed, 16 Apr 2014 18:56:15 -0700 Subject: [PATCH] Hopefully final playptmod fix for IFF sample loops --- Frameworks/playptmod/playptmod/playptmod.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Frameworks/playptmod/playptmod/playptmod.c b/Frameworks/playptmod/playptmod/playptmod.c index 56f21e2a2..61e2d0902 100644 --- a/Frameworks/playptmod/playptmod/playptmod.c +++ b/Frameworks/playptmod/playptmod/playptmod.c @@ -1346,7 +1346,15 @@ int playptmod_LoadMem(void *_p, const unsigned char *buf, unsigned long bufLengt { s->iffSize = j + 8; s->length -= s->iffSize; - if (s->loopStart >= s->iffSize) s->loopStart -= s->iffSize; + + // Relocate loopStart + if (s->loopStart >= ((int32_t)(((j) + 8) & 0xFFFFFFFE))) // even'ify unit + s->loopStart -= ((int32_t)(((j) + 8) & 0xFFFFFFFE)); + + // Fix loopStart+loopLength > sampleLength + while ((s->loopStart + s->loopLength) > s->length) + s->loopLength--; + break; } }