From 5ce855157678de98cf78c241386ffbafe36f7368 Mon Sep 17 00:00:00 2001 From: nick_m Date: Sat, 11 Apr 2015 04:45:45 +1000 Subject: Fix dangling location on new location -> undo. --- libs/ardour/location.cc | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'libs/ardour/location.cc') diff --git a/libs/ardour/location.cc b/libs/ardour/location.cc index 2e9125126b..2c19ebd1e0 100644 --- a/libs/ardour/location.cc +++ b/libs/ardour/location.cc @@ -1113,6 +1113,30 @@ Locations::set_state (const XMLNode& node, int version) } } + /* We may have some unused locations in the old list. */ + for (LocationList::iterator i = locations.begin(); i != locations.end(); ) { + LocationList::iterator tmp = i; + ++tmp; + + LocationList::iterator n = new_locations.begin(); + bool found = false; + + while (n != new_locations.end ()) { + if ((*i)->id() == (*n)->id()) { + found = true; + break; + } + ++n; + } + + if (!found) { + delete *i; + locations.erase (i); + } + + i = tmp; + } + locations = new_locations; if (locations.size()) { -- cgit v1.2.3