diff --git a/plugins/channelrx/demodapt/aptdemod.h b/plugins/channelrx/demodapt/aptdemod.h index ce1f8b48c..58ff596e5 100644 --- a/plugins/channelrx/demodapt/aptdemod.h +++ b/plugins/channelrx/demodapt/aptdemod.h @@ -81,14 +81,14 @@ public: } private: - float m_pixels[APT_PROW_WIDTH]; + const float *m_pixels; int m_zenith; MsgPixels(const float *pixels, int zenith) : Message(), + m_pixels(pixels), m_zenith(zenith) { - memcpy(m_pixels, pixels, sizeof(m_pixels)); } }; diff --git a/plugins/channelrx/demodapt/aptdemodimageworker.cpp b/plugins/channelrx/demodapt/aptdemodimageworker.cpp index 267051402..125dcdcb9 100644 --- a/plugins/channelrx/demodapt/aptdemodimageworker.cpp +++ b/plugins/channelrx/demodapt/aptdemodimageworker.cpp @@ -105,6 +105,7 @@ bool APTDemodImageWorker::handleMessage(const Message& cmd) const APTDemod::MsgPixels& pixelsMsg = (APTDemod::MsgPixels&) cmd; const float *pixels = pixelsMsg.getPixels(); processPixels(pixels); + delete[] pixels; return true; } else if (APTDemod::MsgResetDecoder::match(cmd)) diff --git a/plugins/channelrx/demodapt/aptdemodsink.cpp b/plugins/channelrx/demodapt/aptdemodsink.cpp index f84a5dc0f..5a53eef72 100644 --- a/plugins/channelrx/demodapt/aptdemodsink.cpp +++ b/plugins/channelrx/demodapt/aptdemodsink.cpp @@ -122,7 +122,7 @@ void APTDemodSink::feed(const SampleVector::const_iterator& begin, const SampleV // 2 lines per second if (m_sampleCount >= APTDEMOD_AUDIO_SAMPLE_RATE) { - float pixels[APT_PROW_WIDTH]; + float *pixels = new float[APT_PROW_WIDTH]; apt_getpixelrow(pixels, m_row, &m_zenith, m_row == 0, getsamples, this); if (getImageWorkerMessageQueue()) {