aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/sound/decoders
diff options
context:
space:
mode:
authorColin Snover2017-11-11 20:01:58 -0600
committerColin Snover2017-11-11 20:18:17 -0600
commite6228f3ff67795858c791bb949e138f50b5866c0 (patch)
tree18dba4996163af118b61c85544ecb71b17106810 /engines/sci/sound/decoders
parent4a76e6fb3d2f3853e0c24932203159162d72f52a (diff)
downloadscummvm-rg350-e6228f3ff67795858c791bb949e138f50b5866c0.tar.gz
scummvm-rg350-e6228f3ff67795858c791bb949e138f50b5866c0.tar.bz2
scummvm-rg350-e6228f3ff67795858c791bb949e138f50b5866c0.zip
SCI32: Fix integer overflow calculating audio duration
Due to the need to calculate the audio duration with millisecond precision from the file size, it is possible to overflow a 32-bit integer in games with long background audio loops, like RAMA, during the calculation of the duration. It is also not necessary to give some framerate here, so eliminate the unnecessary explicit Timestamp construction with the second argument.
Diffstat (limited to 'engines/sci/sound/decoders')
-rw-r--r--engines/sci/sound/decoders/sol.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/engines/sci/sound/decoders/sol.cpp b/engines/sci/sound/decoders/sol.cpp
index a6eb8a47b8..b468e5ecf6 100644
--- a/engines/sci/sound/decoders/sol.cpp
+++ b/engines/sci/sound/decoders/sol.cpp
@@ -151,7 +151,7 @@ SOLStream<STEREO, S16BIT, OLDDPCM8>::SOLStream(Common::SeekableReadStream *strea
const uint8 compressionRatio = 2;
const uint8 numChannels = STEREO ? 2 : 1;
const uint8 bytesPerSample = S16BIT ? 2 : 1;
- _length = Audio::Timestamp((_rawDataSize * compressionRatio * 1000) / (_sampleRate * numChannels * bytesPerSample), 60);
+ _length = ((uint64)_rawDataSize * compressionRatio * 1000) / (_sampleRate * numChannels * bytesPerSample);
}
template <bool STEREO, bool S16BIT, bool OLDDPCM8>