Fix segfault when plugin insantiation fails
*PluginInfo::load() eventually calls `plugin->set_info()` which depends on a valid PluginPtr. The method needs to return early if `plugin` is unset or null.
This commit is contained in:
@@ -2624,6 +2624,7 @@ AUPluginInfo::load (Session& session)
|
||||
|
||||
if (!comp->IsValid()) {
|
||||
error << ("AudioUnit: not a valid Component") << endmsg;
|
||||
return PluginPtr ();
|
||||
} else {
|
||||
plugin.reset (new AUPlugin (session.engine(), session, comp));
|
||||
}
|
||||
|
||||
@@ -85,12 +85,11 @@ LXVSTPluginInfo::load (Session& session)
|
||||
|
||||
if (handle == NULL) {
|
||||
error << string_compose(_("LXVST: cannot load module from \"%1\""), path) << endmsg;
|
||||
}
|
||||
else {
|
||||
return PluginPtr ((Plugin*) 0);
|
||||
} else {
|
||||
plugin.reset (new LXVSTPlugin (session.engine(), session, handle, PBD::atoi(unique_id)));
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
error << _("You asked ardour to not use any LXVST plugins") << endmsg;
|
||||
return PluginPtr ((Plugin*) 0);
|
||||
}
|
||||
|
||||
@@ -90,12 +90,11 @@ MacVSTPluginInfo::load (Session& session)
|
||||
|
||||
if (handle == NULL) {
|
||||
error << string_compose (_("MacVST: cannot load module from \"%1\""), path) << endmsg;
|
||||
}
|
||||
else {
|
||||
return PluginPtr ((Plugin*) 0);
|
||||
} else {
|
||||
plugin.reset (new MacVSTPlugin (session.engine (), session, handle, PBD::atoi (unique_id)));
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
error << _("You asked ardour to not use any MacVST plugins") << endmsg;
|
||||
return PluginPtr ((Plugin*) 0);
|
||||
}
|
||||
|
||||
@@ -85,6 +85,7 @@ WindowsVSTPluginInfo::load (Session& session)
|
||||
|
||||
if (!handle) {
|
||||
error << string_compose(_("VST: cannot load module from \"%1\""), path) << endmsg;
|
||||
return PluginPtr ((Plugin*) 0);
|
||||
} else {
|
||||
plugin.reset (new WindowsVSTPlugin (session.engine(), session, handle, PBD::atoi(unique_id)));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user