All plugin activate() method when required for copy & paste operations. Fixes segfau...
[ardour.git] / libs / ardour / audio_playlist.cc
index 812aa8783ba301f22989ae9da79d7d29da3af484..30479cf65b2dc4df0d327670d53811bfec06f3c8 100644 (file)
@@ -46,7 +46,7 @@ AudioPlaylist::AudioPlaylist (Session& session, const XMLNode& node, bool hidden
        assert(!prop || DataType(prop->value()) == DataType::AUDIO);
 
        in_set_state++;
-       set_state (node);
+       set_state (node, Stateful::loading_state_version);
        in_set_state--;
 }
 
@@ -351,7 +351,7 @@ AudioPlaylist::check_dependents (boost::shared_ptr<Region> r, bool norefresh)
        boost::shared_ptr<AudioRegion> top;
        boost::shared_ptr<AudioRegion> bottom;
        boost::shared_ptr<Crossfade>   xfade;
-       RegionList*  touched_regions;
+       RegionList*  touched_regions = 0;
 
        if (in_set_state || in_partition) {
                return;
@@ -401,6 +401,8 @@ AudioPlaylist::check_dependents (boost::shared_ptr<Region> r, bool norefresh)
 
                OverlapType c = top->coverage (bottom->position(), bottom->last_frame());
 
+               delete touched_regions;
+
                try {
                        switch (c) {
                        case OverlapNone:
@@ -509,6 +511,8 @@ AudioPlaylist::check_dependents (boost::shared_ptr<Region> r, bool norefresh)
                }
 
        }
+
+       delete touched_regions;
 }
 
 void
@@ -566,7 +570,7 @@ AudioPlaylist::set_state (const XMLNode& node, int version)
 
        in_set_state++;
 
-       Playlist::set_state (node);
+       Playlist::set_state (node, version);
 
        freeze ();