diff options
author | Colin Snover | 2017-11-11 20:01:58 -0600 |
---|---|---|
committer | Colin Snover | 2017-11-11 20:18:17 -0600 |
commit | e6228f3ff67795858c791bb949e138f50b5866c0 (patch) | |
tree | 18dba4996163af118b61c85544ecb71b17106810 /engines/sci/sound | |
parent | 4a76e6fb3d2f3853e0c24932203159162d72f52a (diff) | |
download | scummvm-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')
-rw-r--r-- | engines/sci/sound/decoders/sol.cpp | 2 |
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> |