From ba5b52e12e2d95c5ac9155cb697e002df5df1de6 Mon Sep 17 00:00:00 2001 From: Gerhard Sittig Date: Sat, 12 May 2018 08:31:52 +0200 Subject: [PATCH 1/1] DecodeSignal: avoid specifying a zero samplerate to libsigrokdecode When the sample rate is not known, avoid claiming the value would be zero and calling setup routines in backend libraries. Although the call is not strictly fatal, this simple check avoids potential log messages at callee's for this unexpected condition. --- pv/data/decodesignal.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pv/data/decodesignal.cpp b/pv/data/decodesignal.cpp index d60c53e4..e70947b2 100644 --- a/pv/data/decodesignal.cpp +++ b/pv/data/decodesignal.cpp @@ -1020,9 +1020,12 @@ void DecodeSignal::start_srd_session() terminate_srd_session(); // Metadata is cleared also, so re-set it + uint64_t samplerate = 0; if (segments_.size() > 0) + samplerate = segments_.at(current_segment_id_).samplerate; + if (samplerate) srd_session_metadata_set(srd_session_, SRD_CONF_SAMPLERATE, - g_variant_new_uint64(segments_.at(current_segment_id_).samplerate)); + g_variant_new_uint64(samplerate)); for (const shared_ptr &dec : stack_) dec->apply_all_options(); srd_session_start(srd_session_); @@ -1077,9 +1080,12 @@ void DecodeSignal::terminate_srd_session() srd_session_terminate_reset(srd_session_); // Metadata is cleared also, so re-set it + uint64_t samplerate = 0; if (segments_.size() > 0) + samplerate = segments_.at(current_segment_id_).samplerate; + if (samplerate) srd_session_metadata_set(srd_session_, SRD_CONF_SAMPLERATE, - g_variant_new_uint64(segments_.at(current_segment_id_).samplerate)); + g_variant_new_uint64(samplerate)); for (const shared_ptr &dec : stack_) dec->apply_all_options(); } -- 2.30.2