From cb815ebb569e15408a24ac45556fbf5db88432a2 Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Sat, 19 Dec 2020 17:40:55 +0100 Subject: [PATCH] Work around null pointers in Ardour --- src/plugin/bridges/vst3-impls/plugin-proxy.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp index 97b98e9d..3ab12494 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp @@ -45,14 +45,18 @@ tresult PLUGIN_API Vst3PluginProxyImpl::setBusArrangements( int32 numIns, Steinberg::Vst::SpeakerArrangement* outputs, int32 numOuts) { - assert(inputs && outputs); + // NOTE: Ardour passes a null pointer when `numIns` or `numOuts` is 0, so we + // need to work around that return bridge.send_message(YaAudioProcessor::SetBusArrangements{ .instance_id = instance_id(), - .inputs = std::vector( - inputs, &inputs[numIns]), + .inputs = (inputs ? std::vector( + inputs, &inputs[numIns]) + : std::vector()), .num_ins = numIns, - .outputs = std::vector( - outputs, &outputs[numOuts]), + .outputs = + (outputs ? std::vector( + outputs, &outputs[numOuts]) + : std::vector()), .num_outs = numOuts, }); }