diff --git a/plugins/channeltx/modfreedv/freedvmod.cpp b/plugins/channeltx/modfreedv/freedvmod.cpp index fdec7f999..441109384 100644 --- a/plugins/channeltx/modfreedv/freedvmod.cpp +++ b/plugins/channeltx/modfreedv/freedvmod.cpp @@ -692,27 +692,18 @@ void FreeDVMod::applyFreeDVMode(FreeDVModSettings::FreeDVMode mode) int nNomModemSamples = freedv_get_n_nom_modem_samples(m_freeDV); int Fs = freedv_get_modem_sample_rate(m_freeDV); int Rs = freedv_get_modem_symbol_rate(m_freeDV); - - if (nSpeechSamples != m_nSpeechSamples) - { - if (m_speechIn) { - delete[] m_speechIn; - } - - m_speechIn = new int16_t[m_nSpeechSamples]; - m_nSpeechSamples = nSpeechSamples; + if ((m_speechIn) && (nSpeechSamples != m_nSpeechSamples)) { + delete[] m_speechIn; } - if (nNomModemSamples != m_nNomModemSamples) - { - if (m_modOut) { - delete[] m_modOut; - } - - m_modOut = new int16_t[m_nNomModemSamples]; - m_nNomModemSamples = nNomModemSamples; + if ((m_modOut) && (nNomModemSamples != m_nNomModemSamples)) { + delete[] m_modOut; } + m_nSpeechSamples = nSpeechSamples; + m_nNomModemSamples = nNomModemSamples; + m_speechIn = new int16_t[m_nSpeechSamples]; + m_modOut = new int16_t[m_nNomModemSamples]; m_iSpeech = 0; m_iModem = 0;