[Scummvm-git-logs] scummvm master -> de585f5799e724965d058f9a6cca012a4841e844
athrxx
noreply at scummvm.org
Fri Feb 2 03:16:31 UTC 2024
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
de585f5799 SCUMM: (INDY3/MAC) - fix invalid mem access
Commit: de585f5799e724965d058f9a6cca012a4841e844
https://github.com/scummvm/scummvm/commit/de585f5799e724965d058f9a6cca012a4841e844
Author: athrxx (athrxx at scummvm.org)
Date: 2024-02-02T04:16:18+01:00
Commit Message:
SCUMM: (INDY3/MAC) - fix invalid mem access
(for very low rates)
Changed paths:
engines/scumm/players/player_mac_indy3.cpp
diff --git a/engines/scumm/players/player_mac_indy3.cpp b/engines/scumm/players/player_mac_indy3.cpp
index 62a0b857fe6..90eefb9d653 100644
--- a/engines/scumm/players/player_mac_indy3.cpp
+++ b/engines/scumm/players/player_mac_indy3.cpp
@@ -455,9 +455,14 @@ int AudioStream_I3M::readBuffer(int16 *buffer, const int numSamples) {
_buffers[ii].lastR = lpos[1];
if (_buffers[ii].pos >= _buffers[ii].end) {
- uint32 refreshSize = MIN<uint32>(_vblCountDown * _frameSize, _buffers[ii].size);
- _buffers[ii].pos -= refreshSize;
- refreshSize -= (incr - 1);
+ int refreshSize = MIN<int>(_vblCountDown * _frameSize, _buffers[ii].size);
+ int ovrflow = _buffers[ii].pos - _buffers[ii].end;
+ _buffers[ii].pos -= (refreshSize + ovrflow);
+ if (_buffers[ii].pos < _buffers[ii].start) {
+ _buffers[ii].pos += ovrflow;
+ refreshSize -= ovrflow;
+ }
+ assert(_buffers[ii].pos + refreshSize == _buffers[ii].end);
generateData(_buffers[ii].pos, refreshSize, stype[ii], _isStereo);
}
}
More information about the Scummvm-git-logs
mailing list