From 5416e640a3de47b1a7d2d6962ac688b463d5fba1 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 28 Mar 2018 00:42:26 +0200 Subject: BLADERUNNER: Switch to doubles in AudStream::getLength() calculations Since we have everything in samples, and we have 44kHz, we easily get overflows. Use doubles for calculating the length in milliseconds more accurately. --- engines/bladerunner/aud_stream.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'engines/bladerunner/aud_stream.cpp') diff --git a/engines/bladerunner/aud_stream.cpp b/engines/bladerunner/aud_stream.cpp index 0d4434cbbf..3d14f948d2 100644 --- a/engines/bladerunner/aud_stream.cpp +++ b/engines/bladerunner/aud_stream.cpp @@ -133,7 +133,12 @@ int AudStream::getLength() const { if (_flags & 2) { // stereo bytesPerSecond *= 2; } - return (1000 * _sizeDecompressed) / bytesPerSecond; + + // since everything is 44100, we easily get overflows with ints + // thus we must use doubles + double res = (double)_sizeDecompressed * 1000.0 / (double)bytesPerSecond; + + return (int32)res; } } // End of namespace BladeRunner -- cgit v1.2.3