From a8162d124b775bbcb25d392afe1037b4b718622d Mon Sep 17 00:00:00 2001 From: reuk Date: Wed, 30 Nov 2022 21:45:05 +0000 Subject: [PATCH] LV2 Client: Ensure AudioBuffer size matches numSteps during run --- modules/juce_audio_plugin_client/LV2/juce_LV2_Client.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/juce_audio_plugin_client/LV2/juce_LV2_Client.cpp b/modules/juce_audio_plugin_client/LV2/juce_LV2_Client.cpp index c27d3a71bf..b6e3f12cba 100644 --- a/modules/juce_audio_plugin_client/LV2/juce_LV2_Client.cpp +++ b/modules/juce_audio_plugin_client/LV2/juce_LV2_Client.cpp @@ -505,8 +505,12 @@ public: void run (uint32_t numSteps) { + // If this is hit, the host is trying to process more samples than it told us to prepare + jassert (static_cast (numSteps) <= processor->getBlockSize()); + midi.clear(); playHead.invalidate(); + audio.setSize (audio.getNumChannels(), static_cast (numSteps), true, false, true); ports.forEachInputEvent ([&] (const LV2_Atom_Event* event) { @@ -536,7 +540,7 @@ public: processor->setNonRealtime (ports.isFreeWheeling()); for (auto i = 0, end = processor->getTotalNumInputChannels(); i < end; ++i) - audio.copyFrom (i, 0, ports.getBufferForAudioInput (i), (int) numSteps); + audio.copyFrom (i, 0, ports.getBufferForAudioInput (i), audio.getNumSamples()); jassert (countNaNs (audio) == 0);