zynaddsubfx

ZynAddSubFX open source synthesizer
Log | Files | Refs | Submodules | LICENSE

commit 51591b3286dd2cb492979829c7f376e674763220
parent 425eed8bccbb64013cfacbedf4bbb1943a25151a
Author: fundamental <mark.d.mccurry@gmail.com>
Date:   Fri, 20 May 2016 11:07:30 -0400

Fix Several Memory Leaks

The primary leak appeared to be missing deallocations for
liblo data structures.

Diffstat:
Msrc/Containers/MultiPseudoStack.cpp | 5+++++
Msrc/Containers/MultiPseudoStack.h | 1+
Msrc/Misc/MiddleWare.cpp | 6+++++-
3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/Containers/MultiPseudoStack.cpp b/src/Containers/MultiPseudoStack.cpp @@ -28,6 +28,11 @@ LockFreeQueue::LockFreeQueue(qli_t *data_, int n) tag[i] = INVALID; } +LockFreeQueue::~LockFreeQueue(void) +{ + delete [] tag; +} + qli_t *LockFreeQueue::read(void) { retry: diff --git a/src/Containers/MultiPseudoStack.h b/src/Containers/MultiPseudoStack.h @@ -34,6 +34,7 @@ class LockFreeQueue std::atomic<int32_t> avail; public: LockFreeQueue(qli_t *data_, int n); + ~LockFreeQueue(void); qli_t *read(void); void write(qli_t *Q); }; diff --git a/src/Misc/MiddleWare.cpp b/src/Misc/MiddleWare.cpp @@ -120,6 +120,8 @@ void path_search(const char *m, const char *url) lo_address addr = lo_address_new_from_url(url); if(addr) lo_send_message(addr, buffer, msg); + lo_address_free(addr); + lo_message_free(msg); } } @@ -137,7 +139,7 @@ static int handler_function(const char *path, const char *types, lo_arg **argv, mw->transmitMsg("/echo", "ss", "OSC_URL", tmp); mw->activeUrl(tmp); } - + free((void*)tmp); } char buffer[2048]; @@ -1375,6 +1377,8 @@ void MiddleWareImpl::sendToRemote(const char *rtmsg, std::string dest) lo_address addr = lo_address_new_from_url(dest.c_str()); if(addr) lo_send_message(addr, rtmsg, msg); + lo_address_free(addr); + lo_message_free(msg); } }