Hello community,
here is the log from the commit of package lsp-plugins for openSUSE:Factory checked in at 2019-09-04 09:15:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/lsp-plugins (Old)
and /work/SRC/openSUSE:Factory/.lsp-plugins.new.7948 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lsp-plugins"
Wed Sep 4 09:15:26 2019 rev:3 rq:727971 version:1.1.10
Changes:
--------
--- /work/SRC/openSUSE:Factory/lsp-plugins/lsp-plugins.changes 2019-08-27 10:22:09.143936505 +0200
+++ /work/SRC/openSUSE:Factory/.lsp-plugins.new.7948/lsp-plugins.changes 2019-09-04 09:16:22.370929551 +0200
@@ -1,0 +2,5 @@
+Tue Sep 3 09:33:01 UTC 2019 - Luigi Baldoni
From 6824c2a9a5f0130f30494981df33f830072f9544 Mon Sep 17 00:00:00 2001 From: sadko4u
Date: Tue, 3 Sep 2019 01:04:39 +0300 Subject: [PATCH] Merge remote-tracking branch 'origin/spectrum-analyzer' into devel
* Fixed memory corruption bug in Analyzer core module that could crash the system on non-power-of-two buffer sizes. Affected plugins: Parametric Equalizer, Graphic Equalizer, Spectrum Analyzer, Multiband Compressor. --- include/core/util/Analyzer.h | 4 ++-- src/core/util/Analyzer.cpp | 5 ++++- src/core/util/Counter.cpp | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/include/core/util/Analyzer.h b/include/core/util/Analyzer.h index 4253cae5..10a63bb7 100644 --- a/include/core/util/Analyzer.h +++ b/include/core/util/Analyzer.h @@ -53,7 +53,7 @@ namespace lsp { float *vBuffer; // FFT buffer float *vAmp; // FFT amplitude - size_t nCounter; // FFT trigger counter + ssize_t nCounter; // FFT trigger counter bool bFreeze; // Freeze analysis bool bActive; // Enable analysis } channel_t; @@ -64,7 +64,7 @@ namespace lsp size_t nRank; size_t nSampleRate; size_t nBufSize; - size_t nFftPeriod; + ssize_t nFftPeriod; float fReactivity; float fTau; float fRate; diff --git a/src/core/util/Analyzer.cpp b/src/core/util/Analyzer.cpp index 37fbfe5f..dfc40ba6 100644 --- a/src/core/util/Analyzer.cpp +++ b/src/core/util/Analyzer.cpp @@ -205,12 +205,15 @@ namespace lsp // Limit number of samples to be processed if (to_process > ssize_t(samples)) to_process = samples; + // Add limitation of processed data according to the FFT window size + if (to_process > ssize_t(fft_size)) + to_process = fft_size; // Move data in the buffer dsp::move(c->vBuffer, &c->vBuffer[to_process], fft_size - to_process); dsp::copy(&c->vBuffer[fft_size - to_process], in, to_process); - // Update counters + // Update counter and pointers c->nCounter += to_process; in += to_process; samples -= to_process; diff --git a/src/core/util/Counter.cpp b/src/core/util/Counter.cpp index 912645df..c75a7e7c 100644 --- a/src/core/util/Counter.cpp +++ b/src/core/util/Counter.cpp @@ -71,7 +71,7 @@ namespace lsp bool Counter::submit(size_t samples) { - ssize_t left = ssize_t(nCurrent) - samples; + ssize_t left = ssize_t(nCurrent) - ssize_t(samples); if (left <= 0) { nCurrent = nInitial + (left % ssize_t(nInitial));