aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2007-06-28 20:15:10 +0000
committerMax Horn2007-06-28 20:15:10 +0000
commit5b75e49182fd66306ff00c37114dc22d9d9d4309 (patch)
tree18cada07c7300ae4d7ef54acc4d016c9e2e2f60b
parentd35861fc4ae5f23126dd7b1a0e512f79b64ff481 (diff)
downloadscummvm-rg350-5b75e49182fd66306ff00c37114dc22d9d9d4309.tar.gz
scummvm-rg350-5b75e49182fd66306ff00c37114dc22d9d9d4309.tar.bz2
scummvm-rg350-5b75e49182fd66306ff00c37114dc22d9d9d4309.zip
Fix a bad, bad out-of-bounds write in the Protracker code
svn-id: r27764
-rw-r--r--sound/mods/protracker.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/sound/mods/protracker.cpp b/sound/mods/protracker.cpp
index 93e252a0f6..bd1e48ead7 100644
--- a/sound/mods/protracker.cpp
+++ b/sound/mods/protracker.cpp
@@ -404,14 +404,15 @@ void ProtrackerStream::updateEffects() {
void ProtrackerStream::interrupt(void) {
int track;
- for (track = 0; track < 4; track++)
+ for (track = 0; track < 4; track++) {
_track[track].offset = getChannelOffset(track);
-
- if (_tick == 0) {
- if (_track[track].arpeggio) {
+ if (_tick == 0 && _track[track].arpeggio) {
_track[track].period = _module.noteToPeriod(_track[track].arpeggioNotes[0],
_track[track].finetune);
}
+ }
+
+ if (_tick == 0) {
if (_hasJumpToPattern) {
_hasJumpToPattern = false;
_pos = _jumpToPattern;