From 1c2f175551728b23c3b336dc1aa1e61ba709799b Mon Sep 17 00:00:00 2001 From: dreamsourcelabTAI Date: Mon, 3 Apr 2023 19:34:17 +0800 Subject: [PATCH] fix: MathTrace used bad channel pointer, so cracked --- DSView/pv/sigsession.cpp | 7 +++++-- DSView/pv/view/mathtrace.cpp | 4 +++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/DSView/pv/sigsession.cpp b/DSView/pv/sigsession.cpp index f85deacb..69ed2aaa 100644 --- a/DSView/pv/sigsession.cpp +++ b/DSView/pv/sigsession.cpp @@ -1480,8 +1480,9 @@ namespace pv assert(dsoSig1); assert(dsoSig2); - auto math_stack = new data::MathStack(this, dsoSig1, dsoSig2, type); DESTROY_OBJECT(_math_trace); + + auto math_stack = new data::MathStack(this, dsoSig1, dsoSig2, type); _math_trace = new view::MathTrace(enable, math_stack, dsoSig1, dsoSig2); if (_math_trace && _math_trace->enabled()) @@ -2079,7 +2080,9 @@ namespace pv } void SigSession::clear_signals() - { + { + DESTROY_OBJECT(_math_trace); + for (int i=0; i< (int)_signals.size(); i++) { auto *p = _signals[i]; diff --git a/DSView/pv/view/mathtrace.cpp b/DSView/pv/view/mathtrace.cpp index 836f0601..5c394ec6 100644 --- a/DSView/pv/view/mathtrace.cpp +++ b/DSView/pv/view/mathtrace.cpp @@ -76,11 +76,13 @@ void MathTrace::set_enable(bool enable) int MathTrace::src1() { + assert(_dsoSig1); return _dsoSig1->get_index(); } int MathTrace::src2() -{ +{ + assert(_dsoSig2); return _dsoSig2->get_index(); }