From 7634d93e798c410a079127524f34b50a8b2a825a Mon Sep 17 00:00:00 2001 From: David Robillard Date: Thu, 16 Dec 2010 22:35:31 +0000 Subject: Fix crash on unfound ALSA port. git-svn-id: http://svn.drobilla.net/lad/trunk/patchage@2725 a436a847-0d15-0410-975c-d299462d15a1 --- src/PatchageCanvas.cpp | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/PatchageCanvas.cpp b/src/PatchageCanvas.cpp index d565068..7af0756 100644 --- a/src/PatchageCanvas.cpp +++ b/src/PatchageCanvas.cpp @@ -74,24 +74,25 @@ PatchageCanvas::find_port(const PortID& id) boost::shared_ptr pp; #ifdef USE_LIBJACK - assert(id.type == PortID::JACK_ID); // Alsa ports are always indexed + // Alsa ports are always indexed (or don't exist at all) + if (id.type == PortID::JACK_ID) { + jack_port_t* jack_port = jack_port_by_id(_app->jack_driver()->client(), id.id.jack_id); + if (!jack_port) + return boost::shared_ptr(); - jack_port_t* jack_port = jack_port_by_id(_app->jack_driver()->client(), id.id.jack_id); - if (!jack_port) - return boost::shared_ptr(); - - string module_name; - string port_name; - _app->jack_driver()->port_names(id, module_name, port_name); + string module_name; + string port_name; + _app->jack_driver()->port_names(id, module_name, port_name); - SharedPtr module = find_module(module_name, - (jack_port_flags(jack_port) & JackPortIsInput) ? Input : Output); + SharedPtr module = find_module( + module_name, (jack_port_flags(jack_port) & JackPortIsInput) ? Input : Output); - if (module) - pp = PtrCast(module->get_port(port_name)); + if (module) + pp = PtrCast(module->get_port(port_name)); - if (pp) - index_port(id, pp); + if (pp) + index_port(id, pp); + } #endif // USE_LIBJACK return pp; -- cgit v1.2.1