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;
|
uint64_t end_sample;
|
||||||
|
|
||||||
if (sample_range_.first == sample_range_.second) {
|
if (sample_range_.first == sample_range_.second) {
|
||||||
|
// No sample range specified, save everything we have
|
||||||
start_sample_ = 0;
|
start_sample_ = 0;
|
||||||
sample_count_ = any_segment->get_sample_count();
|
sample_count_ = any_segment->get_sample_count();
|
||||||
} else {
|
} 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
|
// Begin storing
|
||||||
try {
|
try {
|
||||||
const auto context = session_.device_manager().context();
|
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(
|
const uint64_t end_sample = (uint64_t)max(
|
||||||
(double)0, end_time.convert_to<double>() * samplerate);
|
(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);
|
sample_range = make_pair(start_sample, end_sample);
|
||||||
} else {
|
} else {
|
||||||
sample_range = make_pair(0, 0);
|
sample_range = make_pair(0, 0);
|
||||||
|
|
Loading…
Reference in New Issue