]> sigrok.org Git - pulseview.git/blobdiff - pv/data/logicsegment.cpp
LogicSegment: Check upper bound when performing edge search
[pulseview.git] / pv / data / logicsegment.cpp
index 32a7adb240fc5535a895c00f5d87abfb97d712b3..8f5eab67a6eeaa1d1ca7e7ea6c405b555bed9bfd 100644 (file)
@@ -371,10 +371,14 @@ void LogicSegment::get_subsampled_edges(
 void LogicSegment::get_surrounding_edges(vector<EdgePair> &dest,
        uint64_t origin_sample, float min_length, int sig_index)
 {
+       if (origin_sample >= sample_count_)
+               return;
+
        // Put the edges vector on the heap, it can become quite big until we can
        // use a get_subsampled_edges() implementation that searches backwards
        vector<EdgePair>* edges = new vector<EdgePair>;
 
+       // Get all edges to the left of origin_sample
        get_subsampled_edges(*edges, 0, origin_sample, min_length, sig_index, false);
 
        // If we don't specify "first only", the first and last edge are the states
@@ -390,6 +394,7 @@ void LogicSegment::get_surrounding_edges(vector<EdgePair> &dest,
        dest.push_back(edges->back());
        edges->clear();
 
+       // Get first edge to the right of origin_sample
        get_subsampled_edges(*edges, origin_sample, sample_count_, min_length, sig_index, true);
 
        // "first only" is specified, so nothing needs to be dismissed