Work around null pointers in Ardour

This commit is contained in:
Robbert van der Helm
2020-12-19 17:40:55 +01:00
parent 85faca736f
commit cb815ebb56
@@ -45,14 +45,18 @@ tresult PLUGIN_API Vst3PluginProxyImpl::setBusArrangements(
int32 numIns, int32 numIns,
Steinberg::Vst::SpeakerArrangement* outputs, Steinberg::Vst::SpeakerArrangement* outputs,
int32 numOuts) { 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{ return bridge.send_message(YaAudioProcessor::SetBusArrangements{
.instance_id = instance_id(), .instance_id = instance_id(),
.inputs = std::vector<Steinberg::Vst::SpeakerArrangement>( .inputs = (inputs ? std::vector<Steinberg::Vst::SpeakerArrangement>(
inputs, &inputs[numIns]), inputs, &inputs[numIns])
: std::vector<Steinberg::Vst::SpeakerArrangement>()),
.num_ins = numIns, .num_ins = numIns,
.outputs = std::vector<Steinberg::Vst::SpeakerArrangement>( .outputs =
outputs, &outputs[numOuts]), (outputs ? std::vector<Steinberg::Vst::SpeakerArrangement>(
outputs, &outputs[numOuts])
: std::vector<Steinberg::Vst::SpeakerArrangement>()),
.num_outs = numOuts, .num_outs = numOuts,
}); });
} }