From 5e098da2c2b1ef6636af7943a7788f2b47f0ad6c Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sun, 10 Aug 2014 01:27:27 +0000 Subject: Fix some memory leaks. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5451 a436a847-0d15-0410-975c-d299462d15a1 --- src/server/PostProcessor.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/server/PostProcessor.cpp') diff --git a/src/server/PostProcessor.cpp b/src/server/PostProcessor.cpp index b16aca2a..1ba17450 100644 --- a/src/server/PostProcessor.cpp +++ b/src/server/PostProcessor.cpp @@ -45,6 +45,14 @@ PostProcessor::PostProcessor(Engine& engine) PostProcessor::~PostProcessor() { + /* Delete any straggler events (usually at least one since the event list + is never completely emptied by process()). */ + Event* e = _head; + while (e) { + Event* const next = e->next(); + delete e; + e = next; + } } void @@ -74,7 +82,7 @@ PostProcessor::process() would cause a race with append. Instead, head is an already post-processed node, or initially a sentinel. */ Event* ev = _head.load(); - Event* next = (Event*)ev->next(); + Event* next = ev->next(); if (!next || next->time() >= end_time) { // Process audio thread notifications until end _engine.process_context().emit_notifications(end_time); -- cgit v1.2.1