summaryrefslogtreecommitdiff
path: root/libs/evoral
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/evoral
parentac8f4baa002db37506a84088861b7a288dcdfae6 (diff)
the endless quest to plug memory leaks -- episode 378
Diffstat (limited to 'libs/evoral')
-rw-r--r--libs/evoral/src/ControlList.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/libs/evoral/src/ControlList.cpp b/libs/evoral/src/ControlList.cpp
index 2a013f2669..c665b69a5b 100644
--- a/libs/evoral/src/ControlList.cpp
+++ b/libs/evoral/src/ControlList.cpp
@@ -139,6 +139,7 @@ ControlList::~ControlList()
for (EventList::iterator x = _events.begin(); x != _events.end(); ++x) {
delete (*x);
}
+ _events.clear ();
delete _curve;
}
@@ -178,6 +179,9 @@ ControlList::copy_events (const ControlList& other)
{
{
Glib::Threads::RWLock::WriterLock lm (_lock);
+ for (EventList::iterator x = _events.begin(); x != _events.end(); ++x) {
+ delete (*x);
+ }
_events.clear ();
for (const_iterator i = other.begin(); i != other.end(); ++i) {
_events.push_back (new ControlEvent ((*i)->when, (*i)->value));
@@ -216,6 +220,9 @@ ControlList::clear ()
{
{
Glib::Threads::RWLock::WriterLock lm (_lock);
+ for (EventList::iterator x = _events.begin(); x != _events.end(); ++x) {
+ delete (*x);
+ }
_events.clear ();
unlocked_invalidate_insert_iterator ();
mark_dirty ();