prevent segfault if in/out property is missing
[ardour.git] / libs / ardour / audio_playlist_importer.cc
index cb6bbed907d3f5fc13eefd0e9d80975830d0a0f0..b04173a5be30d2e02cb6dc48e18ecbc3bb73947d 100644 (file)
 
 #include "ardour/audio_region_importer.h"
 #include "ardour/session.h"
-#include "ardour/playlist.h"
 #include "ardour/playlist_factory.h"
 #include "ardour/session_playlists.h"
 
+#include "i18n.h"
+
 using namespace std;
 using namespace PBD;
 using namespace ARDOUR;
@@ -170,13 +171,19 @@ AudioPlaylistImporter::_prepare_move ()
 {
        // Rename
        while (session.playlists->by_name (name) || !handler.check_name (name)) {
-               std::pair<bool, string> rename_pair = Rename (_("A playlist with this name already exists, please rename it."), name);
+               std::pair<bool, string> rename_pair = *Rename (_("A playlist with this name already exists, please rename it."), name);
                if (!rename_pair.first) {
                        return false;
                }
                name = rename_pair.second;
        }
-       xml_playlist.property ("name")->set_value (name);
+       
+       XMLProperty* p = xml_playlist.property ("name");
+       if (!p) {
+               error << _("badly-formed XML in imported playlist") << endmsg;
+       }
+
+       p->set_value (name);
        handler.add_name (name);
 
        return true;
@@ -215,6 +222,7 @@ AudioPlaylistImporter::_move ()
                XMLProperty* out = (*it)->property("out");
                if (!in || !out) {
                        error << string_compose (X_("AudioPlaylistImporter (%1): did not find the \"in\" or \"out\" property from a crossfade"), name) << endmsg;
+                       continue; // or fatal?
                }
 
                handler.update_region_id (in);
@@ -252,3 +260,8 @@ AudioPlaylistImporter::populate_region_list ()
        }
 }
 
+string
+UnusedAudioPlaylistImportHandler::get_info () const
+{
+       return _("Audio Playlists (unused)");
+}