mirror of git://sigrok.org/pulseview
Fix #1038 by catching invalid cursor ranges
This commit is contained in:
parent
7671200bd7
commit
7b7ab1f5cb
|
@ -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();
|
||||
|
|
|
@ -612,6 +612,13 @@ void MainBar::export_file(shared_ptr<OutputFormat> format, bool selection_only)
|
|||
const uint64_t end_sample = (uint64_t)max(
|
||||
(double)0, end_time.convert_to<double>() * samplerate);
|
||||
|
||||
if ((start_sample == 0) && (end_sample == 0)) {
|
||||
// Both cursors are negative and were clamped to 0
|
||||
show_session_error(tr("Invalid Range"), tr("The cursors don't " \
|
||||
"define a valid range of samples."));
|
||||
return;
|
||||
}
|
||||
|
||||
sample_range = make_pair(start_sample, end_sample);
|
||||
} else {
|
||||
sample_range = make_pair(0, 0);
|
||||
|
|
Loading…
Reference in New Issue