diff -Nru ubuntu-app-launch-0.9+16.10.20160913.1/debian/changelog ubuntu-app-launch-0.9+16.10.20160928/debian/changelog --- ubuntu-app-launch-0.9+16.10.20160913.1/debian/changelog 2016-09-28 17:46:22.000000000 +0000 +++ ubuntu-app-launch-0.9+16.10.20160928/debian/changelog 2016-09-28 17:46:22.000000000 +0000 @@ -1,3 +1,9 @@ +ubuntu-app-launch (0.9+16.10.20160928-0ubuntu1) yakkety; urgency=medium + + * Add a try/catch inside the for loop in ::list(). (LP: #1627594) + + -- Rodney Dawes Wed, 28 Sep 2016 17:43:54 +0000 + ubuntu-app-launch (0.9+16.10.20160913.1-0ubuntu1) yakkety; urgency=medium [ Larry Price ] diff -Nru ubuntu-app-launch-0.9+16.10.20160913.1/libubuntu-app-launch/application-impl-libertine.cpp ubuntu-app-launch-0.9+16.10.20160928/libubuntu-app-launch/application-impl-libertine.cpp --- ubuntu-app-launch-0.9+16.10.20160913.1/libubuntu-app-launch/application-impl-libertine.cpp 2016-09-13 17:42:49.000000000 +0000 +++ ubuntu-app-launch-0.9+16.10.20160928/libubuntu-app-launch/application-impl-libertine.cpp 2016-09-28 17:43:24.000000000 +0000 @@ -239,9 +239,17 @@ for (int j = 0; apps.get()[j] != nullptr; j++) { - auto appid = AppID::parse(apps.get()[j]); - auto sapp = std::make_shared(appid.package, appid.appname, registry); - applist.push_back(sapp); + try + { + auto appid = AppID::parse(apps.get()[j]); + auto sapp = std::make_shared(appid.package, appid.appname, registry); + applist.emplace_back(sapp); + } + catch (std::runtime_error& e) + { + g_debug("Unable to create application for libertine appname '%s': %s", + apps.get()[j], e.what()); + } } }