From 3dff15b8c4fff014247ac56ab0e1cbda370171aa Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Tue, 1 Jun 2021 19:33:56 -0500 Subject: [PATCH] Fix memory leak when switching between immediate and queued audio packets --- src/AudioStream.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/AudioStream.c b/src/AudioStream.c index a86cf6b..3570d48 100644 --- a/src/AudioStream.c +++ b/src/AudioStream.c @@ -288,24 +288,25 @@ static void ReceiveThreadProc(void* context) { if (RTPQ_PACKET_READY(queueStatus)) { // If packets are ready, pull them and send them to the decoder uint16_t length; - while ((packet = (PQUEUED_AUDIO_PACKET)RtpaGetQueuedPacket(&rtpAudioQueue, sizeof(QUEUED_AUDIO_PACKET_HEADER), &length)) != NULL) { + PQUEUED_AUDIO_PACKET queuedPacket; + while ((queuedPacket = (PQUEUED_AUDIO_PACKET)RtpaGetQueuedPacket(&rtpAudioQueue, sizeof(QUEUED_AUDIO_PACKET_HEADER), &length)) != NULL) { // Populate header data (not preserved in queued packets) - packet->header.size = length; + queuedPacket->header.size = length; if ((AudioCallbacks.capabilities & CAPABILITY_DIRECT_SUBMIT) == 0) { - if (!queuePacketToLbq(&packet)) { + if (!queuePacketToLbq(&queuedPacket)) { // An exit signal was received break; } } else { - decodeInputData(packet); - free(packet); + decodeInputData(queuedPacket); + free(queuedPacket); } } // Break on exit - if (packet != NULL) { + if (queuedPacket != NULL) { break; } }