X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fstoresession.cpp;h=3d7b058a87034b6c02cc4109347e798b94702b40;hp=50815c26dcedfcaff7716f115b2eb376c371960a;hb=46ebcd3f6f85092a9eb6401f6f56cee8fa08131a;hpb=b82243f74a175f621af26aabbc0f32e2ecb125fa diff --git a/pv/storesession.cpp b/pv/storesession.cpp index 50815c26..3d7b058a 100644 --- a/pv/storesession.cpp +++ b/pv/storesession.cpp @@ -145,6 +145,7 @@ bool StoreSession::start() uint64_t end_sample; if (sample_range_.first == sample_range_.second) { + // No sample range specified, save everything we have start_sample_ = 0; sample_count_ = any_segment->get_sample_count(); } else { @@ -159,6 +160,12 @@ bool StoreSession::start() } } + // Make sure the sample range is valid + if (start_sample_ > any_segment->get_sample_count()) { + error_ = tr("Can't save range without sample data."); + return false; + } + // Begin storing try { const auto context = session_.device_manager().context(); @@ -175,7 +182,7 @@ bool StoreSession::start() {{ConfigKey::SAMPLERATE, Glib::Variant::create( any_segment->samplerate())}}); output_->receive(meta); - } catch (Error error) { + } catch (Error& error) { error_ = tr("Error while saving: ") + error.what(); return false; } @@ -269,7 +276,7 @@ void StoreSession::store_proc(vector< shared_ptr > achannel_li delete[] ldata; } - } catch (Error error) { + } catch (Error& error) { error_ = tr("Error while saving: ") + error.what(); break; }