The plugin crashes due to objectAtIndex trying to access index - 1 of that array
The fix could be to for RNBO::JuceAudioProcessor's _currentPresetIdx field to be initialised to 0 or a different value. I can verify setting the program to 0 (as well as patching JUCE bounds checking code above to consider lower bounds) fixes crashes in AUM for my iOS plugin.
This is fine on most iOS hosts, but for AUM (https://apps.apple.com/us/app/aum-audio-mixer/id1055636344) which is a highly used host for iOS, the fact the initial program is set to -1 causes the plugin to crash.
The reason is that -1 is not a valid program index and JUCE AudioUnit code is not handling -1 as an input. See:
juce::JuceAudioUnitv3::FactoryPresets::getAtIndex
What AUM seems to do it:
Create the plugin filter; here the RNBO::JuceAudioProcessor constructor sets the current program to -1
Get the current preset by calling
juce::JuceAudioUnitv3::getCurrentPreset
At this point, we're calling
factoryPresets.getAtIndex (-1)
; see the implementation of this method does no lower bounds checkingThe fix could be to for RNBO::JuceAudioProcessor's
_currentPresetIdx
field to be initialised to 0 or a different value. I can verify setting the program to 0 (as well as patching JUCE bounds checking code above to consider lower bounds) fixes crashes in AUM for my iOS plugin.All the best