[Scummvm-git-logs] scummvm master -> d4a0ac0e78401a835cfda6a1ca204dfd19073bfc

AndywinXp noreply at scummvm.org
Sun Jan 15 11:12:14 UTC 2023


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:
d4a0ac0e78 SCUMM: DIMUSE: Fix uninit memory read for low latency mode


Commit: d4a0ac0e78401a835cfda6a1ca204dfd19073bfc
    https://github.com/scummvm/scummvm/commit/d4a0ac0e78401a835cfda6a1ca204dfd19073bfc
Author: AndywinXp (andywinxp at gmail.com)
Date: 2023-01-15T12:12:06+01:00

Commit Message:
SCUMM: DIMUSE: Fix uninit memory read for low latency mode

Changed paths:
    engines/scumm/imuse_digi/dimuse_internalmixer.cpp
    engines/scumm/imuse_digi/dimuse_tracks.cpp


diff --git a/engines/scumm/imuse_digi/dimuse_internalmixer.cpp b/engines/scumm/imuse_digi/dimuse_internalmixer.cpp
index bb3359ba118..882cc42842f 100644
--- a/engines/scumm/imuse_digi/dimuse_internalmixer.cpp
+++ b/engines/scumm/imuse_digi/dimuse_internalmixer.cpp
@@ -44,6 +44,8 @@ IMuseDigiInternalMixer::IMuseDigiInternalMixer(Audio::Mixer *mixer, int sampleRa
 
 	if (!_lowLatencyMode || _isEarlyDiMUSE)
 		_stream = Audio::makeQueuingAudioStream(_sampleRate, _mixer->getOutputStereo());
+	else
+		_stream = nullptr;
 
 	_radioChatter = 0;
 	_amp8Table = nullptr;
diff --git a/engines/scumm/imuse_digi/dimuse_tracks.cpp b/engines/scumm/imuse_digi/dimuse_tracks.cpp
index e4a489478c4..5ff483370d9 100644
--- a/engines/scumm/imuse_digi/dimuse_tracks.cpp
+++ b/engines/scumm/imuse_digi/dimuse_tracks.cpp
@@ -260,8 +260,11 @@ void IMuseDigital::tracksLowLatencyCallback() {
 
 		// We use a separate queue cardinality handling, since SMUSH audio and iMUSE audio can overlap...
 		bool canQueueBufs = (int)_internalMixer->getStream(idx)->numQueuedStreams() < (_maxQueuedStreams + 1);
-		bool canQueueFtSmush = (int)_internalMixer->getStream(-1)->numQueuedStreams() < (_maxQueuedStreams + 1);
-		canQueueFtSmush &= _internalMixer->getStream(-1) != nullptr;
+		bool canQueueFtSmush = _internalMixer->getStream(-1) != nullptr;
+
+		if (canQueueFtSmush) {
+			canQueueFtSmush &= (int)_internalMixer->getStream(-1)->numQueuedStreams() < (_maxQueuedStreams + 1);
+		}
 
 		if (canQueueBufs) {
 			if (track)




More information about the Scummvm-git-logs mailing list