From b0e689eaf4b170f8e693f4183534d7ab896db406 Mon Sep 17 00:00:00 2001 From: reuk Date: Thu, 30 Dec 2021 12:14:11 +0000 Subject: [PATCH] AudioProcessLoadMeasurer: Fix potential divide by zero due to uninitialised samplesPerBlock --- .../buffers/juce_AudioProcessLoadMeasurer.cpp | 5 +++++ .../gui/juce_AudioDeviceSelectorComponent.cpp | 4 ---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/juce_audio_basics/buffers/juce_AudioProcessLoadMeasurer.cpp b/modules/juce_audio_basics/buffers/juce_AudioProcessLoadMeasurer.cpp index ee778098db..52697cfac0 100644 --- a/modules/juce_audio_basics/buffers/juce_AudioProcessLoadMeasurer.cpp +++ b/modules/juce_audio_basics/buffers/juce_AudioProcessLoadMeasurer.cpp @@ -36,6 +36,8 @@ void AudioProcessLoadMeasurer::reset (double sampleRate, int blockSize) cpuUsageProportion = 0; xruns = 0; + samplesPerBlock = blockSize; + if (sampleRate > 0.0 && blockSize > 0) { msPerSample = 1000.0 / sampleRate; @@ -77,6 +79,9 @@ AudioProcessLoadMeasurer::ScopedTimer::ScopedTimer (AudioProcessLoadMeasurer& p) AudioProcessLoadMeasurer::ScopedTimer::ScopedTimer (AudioProcessLoadMeasurer& p, int numSamplesInBlock) : owner (p), startTime (Time::getMillisecondCounterHiRes()), samplesInBlock (numSamplesInBlock) { + // numSamplesInBlock should never be zero. Did you remember to call AudioProcessLoadMeasurer::reset(), + // passing the expected samples per block? + jassert (numSamplesInBlock); } AudioProcessLoadMeasurer::ScopedTimer::~ScopedTimer() diff --git a/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp b/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp index 90ca7483e9..2e8227f5ed 100644 --- a/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp +++ b/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp @@ -35,10 +35,6 @@ struct SimpleDeviceManagerInputLevelMeter : public Component, inputLevelGetter = manager.getInputLevelGetter(); } - ~SimpleDeviceManagerInputLevelMeter() override - { - } - void timerCallback() override { if (isShowing())