summaryrefslogtreecommitdiff
path: root/libs/ardour/tempo.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-07-25 17:16:32 +0200
committerRobin Gareus <robin@gareus.org>2016-07-25 17:16:32 +0200
commiteec294a97edce69ca71c972867ab708d5dd5625d (patch)
treed48202a8e6b5978ba1d6d5a83a574b3a91687460 /libs/ardour/tempo.cc
parentac8f4baa002db37506a84088861b7a288dcdfae6 (diff)
the endless quest to plug memory leaks -- episode 378
Diffstat (limited to 'libs/ardour/tempo.cc')
-rw-r--r--libs/ardour/tempo.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/libs/ardour/tempo.cc b/libs/ardour/tempo.cc
index 793d96c663..56f88d33d9 100644
--- a/libs/ardour/tempo.cc
+++ b/libs/ardour/tempo.cc
@@ -3471,6 +3471,7 @@ TempoMap::set_state (const XMLNode& node, int /*version*/)
catch (failed_constructor& err){
error << _("Tempo map: could not set new state, restoring old one.") << endmsg;
_metrics = old_metrics;
+ old_metrics.clear();
break;
}
@@ -3484,6 +3485,7 @@ TempoMap::set_state (const XMLNode& node, int /*version*/)
catch (failed_constructor& err) {
error << _("Tempo map: could not set new state, restoring old one.") << endmsg;
_metrics = old_metrics;
+ old_metrics.clear();
break;
}
}
@@ -3535,6 +3537,13 @@ TempoMap::set_state (const XMLNode& node, int /*version*/)
}
recompute_map (_metrics);
+
+ Metrics::const_iterator d = old_metrics.begin();
+ while (d != old_metrics.end()) {
+ delete (*d);
+ ++d;
+ }
+ old_metrics.clear ();
}
PropertyChanged (PropertyChange ());