X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Faudio_track_importer.cc;h=b3ac93e010696ebc091b9533c5907edc1cdce499;hb=b9054a1f723f6107f42a04ae9838820bbbd1f0ce;hp=a831e480dbceafdf598d02dcd530575ae3eb0e3d;hpb=73192bc1a7ea55fa1864dc3826845b15c00dd2ec;p=ardour.git diff --git a/libs/ardour/audio_track_importer.cc b/libs/ardour/audio_track_importer.cc index a831e480db..b3ac93e010 100644 --- a/libs/ardour/audio_track_importer.cc +++ b/libs/ardour/audio_track_importer.cc @@ -24,8 +24,9 @@ #include "ardour/audio_diskstream.h" #include "ardour/session.h" -#include "pbd/failed_constructor.h" +#include "pbd/controllable.h" #include "pbd/convert.h" +#include "pbd/failed_constructor.h" #include #include @@ -222,6 +223,7 @@ AudioTrackImporter::get_info () const return name; } +/** @return true if everything is ok */ bool AudioTrackImporter::_prepare_move () { @@ -246,7 +248,21 @@ AudioTrackImporter::_prepare_move () } name = rename_pair.second; } - xml_track.child ("IO")->property ("name")->set_value (name); + + XMLNode* c = xml_track.child ("IO"); + if (!c) { + error << _("badly-formed XML in imported track") << endmsg; + return false; + } + + XMLProperty* p = c->property ("name"); + if (!p) { + error << _("badly-formed XML in imported track") << endmsg; + return false; + } + + p->set_value (name); + track_handler.add_name (name); return true; @@ -266,7 +282,7 @@ AudioTrackImporter::_move () boost::shared_ptr ds_node_list; string xpath = "/Session/DiskStreams/AudioDiskstream[@id='" + old_ds_id.to_s() + "']"; - ds_node_list = source.root()->find (xpath); + ds_node_list = source.find (xpath); if (ds_node_list->size() != 1) { error << string_compose (_("Error Importing Audio track %1"), name) << endmsg; @@ -274,7 +290,9 @@ AudioTrackImporter::_move () } boost::shared_ptr ds_node = ds_node_list->front(); - ds_node->property ("id")->set_value (new_ds_id.to_s()); + XMLProperty* p = ds_node->property (X_("id")); + assert (p); + p->set_value (new_ds_id.to_s()); boost::shared_ptr new_ds (new AudioDiskstream (session, *ds_node)); new_ds->set_name (name);