From 3cc31133a0660e9ee746b81ff0abff6671d98318 Mon Sep 17 00:00:00 2001 From: philippe44 Date: Sat, 3 Aug 2019 01:30:17 -0700 Subject: [PATCH] free previous opus on open --- components/squeezelite/opus.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/components/squeezelite/opus.c b/components/squeezelite/opus.c index 6751ab49..5e5c45d0 100644 --- a/components/squeezelite/opus.c +++ b/components/squeezelite/opus.c @@ -246,9 +246,12 @@ static decode_state opus_decompress(void) { static void opus_open(u8_t size, u8_t rate, u8_t chan, u8_t endianness) { if (!u->of) { #if FRAME_BUF - u->write_buf = malloc(FRAME_BUF * BYTES_PER_FRAME); + if (!u->write_buf) u->write_buf = malloc(FRAME_BUF * BYTES_PER_FRAME); #endif - } + } else { + OP(u, free, u->of); + u->of = NULL; + } u->opened = false; } @@ -276,7 +279,7 @@ static bool load_opus(void) { u->op_read = dlsym(handle, "op_read"); u->op_head = dlsym(handle, "op_head"); u->op_open_callbacks = dlsym(handle, "op_open_callbacks"); - + if ((err = dlerror()) != NULL) { LOG_INFO("dlerror: %s", err); return false; @@ -305,7 +308,7 @@ struct codec *register_opus(void) { } u->of = NULL; - u->opened = false; + u->write_buf = NULL; if (!load_opus()) { return NULL;