From 3f06a24b5da2f1cf610067b08cb3a29be6b40ccf Mon Sep 17 00:00:00 2001 From: Dave Horton Date: Mon, 30 Sep 2024 14:44:41 -0400 Subject: [PATCH] not clearing mark memory properly (#118) * not clearing mark memory properly * race condition where mark followed by audio and buffers for mark not completely allocated --- mod_audio_fork/lws_glue.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mod_audio_fork/lws_glue.cpp b/mod_audio_fork/lws_glue.cpp index 745a724..7b9d90f 100644 --- a/mod_audio_fork/lws_glue.cpp +++ b/mod_audio_fork/lws_glue.cpp @@ -557,7 +557,7 @@ namespace { tech_pvt->streamingPreBuffer = nullptr; } - if (nullptr == tech_pvt->pVecMarksInInventory) { + if (tech_pvt->pVecMarksInInventory) { delete static_cast*>(tech_pvt->pVecMarksInInventory); tech_pvt->pVecMarksInInventory = nullptr; delete static_cast*>(tech_pvt->pVecMarksInUse); @@ -979,7 +979,7 @@ extern "C" { std::deque* pVecInventory = nullptr; std::deque* pVecInUse = nullptr; std::deque* pVecCleared = nullptr; - if (nullptr != tech_pvt->pVecMarksInUse) { + if (tech_pvt->pVecMarksInInventory && tech_pvt->pVecMarksInUse && tech_pvt->pVecMarksCleared) { pVecInventory = static_cast*>(tech_pvt->pVecMarksInInventory); pVecInUse = static_cast*>(tech_pvt->pVecMarksInUse); pVecCleared = static_cast*>(tech_pvt->pVecMarksCleared); @@ -1032,7 +1032,7 @@ extern "C" { if (samplesToCopy > 0) { vector_add(fp, data, rframe->samples); - } else if (pVecInventory != nullptr && pVecInventory->size()) { + } else if (pVecInventory && pVecInventory->size()) { // no bidirectional audio to dub but still have some mark in inventory, send them now auto name = pVecInventory->front(); pVecInventory->pop_front();