diff --git a/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp b/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp index 10636d8dfb..a9a0ecb476 100644 --- a/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp +++ b/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp @@ -1277,16 +1277,18 @@ public: // read the format chunk auto format = (unsigned short) input->readShort(); numChannels = (unsigned int) input->readShort(); - sampleRate = input->readInt(); - auto bytesPerSec = input->readInt(); + const auto intSampleRate = (uint32_t) input->readInt(); + sampleRate = intSampleRate; + auto bytesPerSec = (uint32_t) input->readInt(); input->skipNextBytes (2); bitsPerSample = (unsigned int) (int) input->readShort(); - if (bitsPerSample > 64 && (int) sampleRate != 0) + if (bitsPerSample > 64 && intSampleRate > 0) { - bytesPerFrame = bytesPerSec / (int) sampleRate; + bytesPerFrame = (int) (bytesPerSec / intSampleRate); + jassert (bytesPerFrame >= 0); - if (numChannels != 0) + if (numChannels > 0) bitsPerSample = 8 * (unsigned int) bytesPerFrame / numChannels; } else