From 3eec09a01fe80f4e064bd9a76f752f5e8e2f118d Mon Sep 17 00:00:00 2001 From: f4exb Date: Fri, 6 Nov 2015 08:56:33 +0100 Subject: [PATCH] GLScope: fixed trace memory out of bounds when full history is not complete --- include/gui/glscope.h | 1 + sdrbase/gui/glscope.cpp | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/include/gui/glscope.h b/include/gui/glscope.h index 7a314449f..66b71e74e 100644 --- a/include/gui/glscope.h +++ b/include/gui/glscope.h @@ -103,6 +103,7 @@ private: int m_sampleRates[16]; BitfieldIndex m_memTraceIndex; //!< current index of trace being written BitfieldIndex m_memTraceHistory; //!< trace index shift into history + int m_memTraceIndexMax; bool m_memTraceRecall; std::vector m_mathTrace; std::vector* m_displayTrace; diff --git a/sdrbase/gui/glscope.cpp b/sdrbase/gui/glscope.cpp index fa643e546..12d4b47c4 100644 --- a/sdrbase/gui/glscope.cpp +++ b/sdrbase/gui/glscope.cpp @@ -23,6 +23,7 @@ GLScope::GLScope(QWidget* parent) : m_orientation(Qt::Horizontal), m_memTraceIndex(0), m_memTraceHistory(0), + m_memTraceIndexMax(0), m_memTraceRecall(false), m_displayTrace(&m_rawTrace[0]), m_oldTraceSize(-1), @@ -197,6 +198,11 @@ void GLScope::newTrace(const std::vector& trace, int sampleRate) m_rawTrace[m_memTraceIndex] = trace; m_sampleRates[m_memTraceIndex] = sampleRate; + if(m_memTraceIndexMax < (1<