[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