From a372fcbe51c9ea52149187ea753f32a63d3940ac Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 18 Apr 2017 14:14:17 +0100 Subject: prevent crash when loading midi port info about ports that no longer exist --- libs/ardour/port_manager.cc | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'libs/ardour/port_manager.cc') diff --git a/libs/ardour/port_manager.cc b/libs/ardour/port_manager.cc index aa56ab8d43..268d7cb9fe 100644 --- a/libs/ardour/port_manager.cc +++ b/libs/ardour/port_manager.cc @@ -1207,19 +1207,25 @@ PortManager::fill_midi_port_info_locked () for (MidiPortInfo::iterator x = midi_port_info.begin(); x != midi_port_info.end(); ++x) { PortEngine::PortHandle ph = _backend->get_port_by_name (x->first); + if (!ph) { + /* port info saved from some condition where this port + * existed, but no longer does (i.e. device unplugged + * at present) + */ + continue; + } + if (x->second.pretty_name != x->first) { /* name set in port info ... propagate */ _backend->set_port_property (ph, "http://jackaudio.org/metadata/pretty-name", x->second.pretty_name, string()); } else { /* check with backend for pre-existing pretty name */ - if (ph) { - string value; - string type; - if (0 == _backend->get_port_property (ph, - "http://jackaudio.org/metadata/pretty-name", - value, type)) { - x->second.pretty_name = value; - } + string value; + string type; + if (0 == _backend->get_port_property (ph, + "http://jackaudio.org/metadata/pretty-name", + value, type)) { + x->second.pretty_name = value; } } } -- cgit v1.2.3