Fix #1038 by catching invalid cursor ranges

This commit is contained in:
Soeren Apel 2018-02-10 10:52:16 +01:00
parent 7671200bd7
commit 7b7ab1f5cb
2 changed files with 14 additions and 0 deletions

View File

@ -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();

View File

@ -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);