From 0d8ee3e847750c037d5a31a7ae5dc1b182dcb70c Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 10 Jul 2021 17:47:18 +0200 Subject: [PATCH] Catch errors instead of testing for nullptr --- session_utils/fix_bbtppq.cc | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/session_utils/fix_bbtppq.cc b/session_utils/fix_bbtppq.cc index 81b148bcc6..5c6d8a7b60 100644 --- a/session_utils/fix_bbtppq.cc +++ b/session_utils/fix_bbtppq.cc @@ -94,10 +94,9 @@ ensure_per_region_source (Session* session, boost::shared_ptr region */ if (Glib::file_test (newsrc_path, Glib::FILE_TEST_EXISTS)) { Source::Flag flags = Source::Flag (Source::Writable | Source::CanRename); - newsrc = boost::dynamic_pointer_cast( - SourceFactory::createExternal(DataType::MIDI, *session, - newsrc_path, 1, flags)); - if (!newsrc) { + try { + newsrc = boost::dynamic_pointer_cast (SourceFactory::createExternal (DataType::MIDI, *session, newsrc_path, 1, flags)); + } catch (failed_constructor& err) { cout << UTILNAME << ":" << endl << " An error occurred creating external source from " << newsrc_path << " exiting." << endl; session_fail (session); @@ -120,9 +119,9 @@ ensure_per_region_source (Session* session, boost::shared_ptr region << " for region " << region->name() << endl; } else { - newsrc = boost::dynamic_pointer_cast(SourceFactory::createWritable(DataType::MIDI, *session, newsrc_path, session->sample_rate())); - - if (!newsrc) { + try { + newsrc = boost::dynamic_pointer_cast (SourceFactory::createWritable (DataType::MIDI, *session, newsrc_path, session->sample_rate())); + } catch (failed_constructor& err) { cout << UTILNAME << ":" << endl << " An error occurred creating writeable source " << newsrc_path << " exiting." << endl; session_fail (session); @@ -157,11 +156,9 @@ ensure_per_source_source (Session* session, boost::shared_ptr region /* flags are ignored for external MIDI source */ Source::Flag flags = Source::Flag (Source::Writable | Source::CanRename); - newsrc = boost::dynamic_pointer_cast( - SourceFactory::createExternal(DataType::MIDI, *session, - newsrc_path, 1, flags)); - - if (!newsrc) { + try { + newsrc = boost::dynamic_pointer_cast (SourceFactory::createExternal (DataType::MIDI, *session, newsrc_path, 1, flags)); + } catch (failed_constructor& err) { cout << UTILNAME << ":" << endl << " An error occurred creating external source from " << newsrc_path << " exiting." << endl; session_fail (session); @@ -173,9 +170,9 @@ ensure_per_source_source (Session* session, boost::shared_ptr region << " for source " << region->midi_source(0)->name() << endl; } else { - newsrc = boost::dynamic_pointer_cast( - SourceFactory::createWritable(DataType::MIDI, *session, newsrc_path, session->sample_rate())); - if (!newsrc) { + try { + newsrc = boost::dynamic_pointer_cast (SourceFactory::createWritable (DataType::MIDI, *session, newsrc_path, session->sample_rate())); + } catch (failed_constructor& err) { cout << UTILNAME << ":" << endl <<" An error occurred creating writeable source " << newsrc_path << " exiting." << endl; session_fail (session);