From 81c29ac104e4bec8751091fd7cc8fd0047cf13f7 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Wed, 11 Nov 2020 22:57:19 +0100 Subject: Fix buffer memory leaks on shutdown --- src/server/BufferFactory.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/server') diff --git a/src/server/BufferFactory.cpp b/src/server/BufferFactory.cpp index 2de18ee8..c606c8cd 100644 --- a/src/server/BufferFactory.cpp +++ b/src/server/BufferFactory.cpp @@ -46,10 +46,14 @@ BufferFactory::BufferFactory(Engine& engine, URIs& uris) BufferFactory::~BufferFactory() { _silent_buffer.reset(); - free_list(_free_audio.load()); - free_list(_free_control.load()); - free_list(_free_sequence.load()); - free_list(_free_object.load()); + + // Run twice to delete value buffer references which are dropped + for (unsigned i = 0; i < 2; ++i) { + free_list(_free_audio.exchange(nullptr)); + free_list(_free_control.exchange(nullptr)); + free_list(_free_sequence.exchange(nullptr)); + free_list(_free_object.exchange(nullptr)); + } } Forge& -- cgit v1.2.1