if (int totalChans = jmax (totalOutputChans, totalInputChans)) buffer.setDataToReferTo (channelList.getRawDataPointer(), totalChans, (int) data.numSamples);
if you have no audio inputs or outputs then the
buffer.setDataToReferTo line never gets called because
0 is falsey, so in a
buffer.getNumSamples() will always be
0. this seems like it would break code that depends on that value being present, eg the arpeggiator example.
compare to the code from juce_VST_Wrapper.cpp which does initialize it correctly in that case:
const int numChannels = jmax (numIn, numOut); AudioBuffer<FloatType> chans (tmpBuffers.channels, isMidiEffect ? 0 : numChannels, numSamples);