From a29bfb0219eb53b79dbb6d88150c75fba762ad21 Mon Sep 17 00:00:00 2001 From: falkTX Date: Mon, 8 Jan 2018 22:02:09 +0100 Subject: [PATCH] Fix memory leak in carla-plugin pipe usage Fixes #565 --- source/backend/CarlaUtils.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/source/backend/CarlaUtils.cpp b/source/backend/CarlaUtils.cpp index 1d2397bac..2c90fd288 100644 --- a/source/backend/CarlaUtils.cpp +++ b/source/backend/CarlaUtils.cpp @@ -559,14 +559,26 @@ public: CarlaPipeClientPlugin(const CarlaPipeCallbackFunc callbackFunc, void* const callbackPtr) noexcept : CarlaPipeClient(), fCallbackFunc(callbackFunc), - fCallbackPtr(callbackPtr) + fCallbackPtr(callbackPtr), + fLastReadLine(nullptr) { CARLA_SAFE_ASSERT(fCallbackFunc != nullptr); } + ~CarlaPipeClientPlugin() override + { + if (fLastReadLine != nullptr) + { + delete[] fLastReadLine; + fLastReadLine = nullptr; + } + } + const char* readlineblock(const uint timeout) noexcept { - return CarlaPipeClient::_readlineblock(timeout); + delete[] fLastReadLine; + fLastReadLine = CarlaPipeClient::_readlineblock(timeout); + return fLastReadLine; } bool msgReceived(const char* const msg) noexcept @@ -584,6 +596,7 @@ public: private: const CarlaPipeCallbackFunc fCallbackFunc; void* const fCallbackPtr; + const char* fLastReadLine; CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaPipeClientPlugin) };