From 9232f676683f0facba1de7dd3461b42c3797ed4f Mon Sep 17 00:00:00 2001 From: f4exb Date: Tue, 26 Feb 2019 00:19:15 +0100 Subject: [PATCH] FreeDV modulator: fixed FreeDV arrays initialization (fixed) --- plugins/channeltx/modfreedv/freedvmod.cpp | 25 +++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/plugins/channeltx/modfreedv/freedvmod.cpp b/plugins/channeltx/modfreedv/freedvmod.cpp index 441109384..4ca2f88fa 100644 --- a/plugins/channeltx/modfreedv/freedvmod.cpp +++ b/plugins/channeltx/modfreedv/freedvmod.cpp @@ -692,18 +692,27 @@ 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 ((m_speechIn) && (nSpeechSamples != m_nSpeechSamples)) { - delete[] m_speechIn; + + if (nSpeechSamples != m_nSpeechSamples) + { + if (m_speechIn) { + delete[] m_speechIn; + } + + m_speechIn = new int16_t[nSpeechSamples]; + m_nSpeechSamples = nSpeechSamples; } - if ((m_modOut) && (nNomModemSamples != m_nNomModemSamples)) { - delete[] m_modOut; + if (nNomModemSamples != m_nNomModemSamples) + { + if (m_modOut) { + delete[] m_modOut; + } + + m_modOut = new int16_t[nNomModemSamples]; + m_nNomModemSamples = nNomModemSamples; } - 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;