fix bonehead mistake not cleaning up arrays before reallocating them;

pull/55/head
Bryan Biedenkapp 2 years ago
parent a7f9cb93be
commit afa47f4b58

@ -60,17 +60,7 @@ NID::NID(uint32_t nac) :
/// </summary> /// </summary>
NID::~NID() NID::~NID()
{ {
for (uint8_t i = 0; i < 16U; i++) cleanupArrays();
{
if (m_rxTx[i] != nullptr) {
delete[] m_rxTx[i];
}
if (m_tx[i] != nullptr) {
delete[] m_tx[i];
}
}
delete[] m_rxTx; delete[] m_rxTx;
delete[] m_tx; delete[] m_tx;
} }
@ -90,6 +80,7 @@ bool NID::decode(const uint8_t* data)
// handle digital "squelch" NAC // handle digital "squelch" NAC
if ((m_nac == P25_NAC_DIGITAL_SQ) || (m_nac == P25_NAC_REUSE_RX_NAC)) { if ((m_nac == P25_NAC_DIGITAL_SQ) || (m_nac == P25_NAC_REUSE_RX_NAC)) {
uint32_t nac = ((nid[0U] << 4) + (nid[1U] >> 4)) & 0xFFFU; uint32_t nac = ((nid[0U] << 4) + (nid[1U] >> 4)) & 0xFFFU;
cleanupArrays();
createRxTxNID(nac); // bryanb: I hate this and it'll be slow createRxTxNID(nac); // bryanb: I hate this and it'll be slow
} }
@ -165,6 +156,7 @@ void NID::encode(uint8_t* data, uint8_t duid)
else { else {
// handle digital "squelch" NAC // handle digital "squelch" NAC
if (m_nac == P25_NAC_DIGITAL_SQ) { if (m_nac == P25_NAC_DIGITAL_SQ) {
cleanupArrays();
createRxTxNID(P25_DEFAULT_NAC); createRxTxNID(P25_DEFAULT_NAC);
} }
@ -202,6 +194,23 @@ void NID::setTxNAC(uint32_t nac)
// Private Class Members // Private Class Members
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
/// <summary>
///
/// </summary>
void NID::cleanupArrays()
{
for (uint8_t i = 0; i < 16U; i++)
{
if (m_rxTx[i] != nullptr) {
delete[] m_rxTx[i];
}
if (m_tx[i] != nullptr) {
delete[] m_tx[i];
}
}
}
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>

@ -51,6 +51,8 @@ namespace p25
bool m_splitNac; bool m_splitNac;
/// <summary></summary>
void cleanupArrays();
/// <summary></summary> /// <summary></summary>
void createRxTxNID(uint32_t nac); void createRxTxNID(uint32_t nac);
/// <summary></summary> /// <summary></summary>

Loading…
Cancel
Save

Powered by TurnKey Linux.