Fix crash when duplicating track(s)

Compare to PluginInsert::set_state(). The sidechain must not
inherit the name from the template track. That leads
to port-name ambiguities.

Also later there will be a crash when ::update_sidechain_name()
calls IO::set_name since: _name is not found in _current_name.
This commit is contained in:
Robin Gareus 2022-01-24 21:21:07 +01:00
parent 4c433106a4
commit 7128c9958f
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
3 changed files with 6 additions and 2 deletions

View File

@ -1141,6 +1141,7 @@ IO::set_name (const string& requested_name)
for (PortSet::iterator i = _ports.begin(); i != _ports.end(); ++i) {
string current_name = i->name();
assert (current_name.find (_name) != std::string::npos);
current_name.replace (current_name.find (_name), _name.val().length(), name);
i->set_name (current_name);
}

View File

@ -3167,7 +3167,6 @@ Route::set_processor_state (const XMLNode& node, int version)
_triggerbox->set_owner (this);
}
_triggerbox->set_state (**niter, version);
_triggerbox->update_sidechain_name ();
new_order.push_back (_triggerbox);
} else {

View File

@ -3223,7 +3223,11 @@ TriggerBox::set_state (const XMLNode& node, int version)
if (scnode) {
add_midi_sidechain ();
assert (_sidechain);
_sidechain->set_state (*scnode, version);
if (!regenerate_xml_or_string_ids ()) {
_sidechain->set_state (*scnode, version);
} else {
update_sidechain_name ();
}
}
return 0;