commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] [gnuradio] 01/02: Fix a segfault issue for QT time sin


From: git
Subject: [Commit-gnuradio] [gnuradio] 01/02: Fix a segfault issue for QT time sink
Date: Sun, 23 Apr 2017 13:38:40 +0000 (UTC)

This is an automated email from the git hooks/post-receive script.

jcorgan pushed a commit to branch maint
in repository gnuradio.

commit 1ae8015cee510fd51e67ddf860f421c9c701c28b
Author: Ruben Undheim <address@hidden>
Date:   Tue Apr 11 22:10:39 2017 +0200

    Fix a segfault issue for QT time sink
    
    When running with trigger mode set to "tag", there is
    a corner case where d_start becomes -1, and the flow
    graph crashes.
---
 gr-qtgui/lib/time_sink_c_impl.cc | 13 ++++++++-----
 gr-qtgui/lib/time_sink_f_impl.cc | 13 ++++++++-----
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/gr-qtgui/lib/time_sink_c_impl.cc b/gr-qtgui/lib/time_sink_c_impl.cc
index d7514ae..06d0c78 100644
--- a/gr-qtgui/lib/time_sink_c_impl.cc
+++ b/gr-qtgui/lib/time_sink_c_impl.cc
@@ -563,12 +563,15 @@ namespace gr {
                         nr, nr + nitems + 1,
                         d_trigger_tag_key);
       if(tags.size() > 0) {
-        d_triggered = true;
         trigger_index = tags[0].offset - nr;
-        d_start = d_index + trigger_index - d_trigger_delay - 1;
-        d_end = d_start + d_size;
-        d_trigger_count = 0;
-        _adjust_tags(-d_start);
+        int start = d_index + trigger_index - d_trigger_delay - 1;
+        if (start >= 0) {
+            d_triggered = true;
+            d_start = start;
+            d_end = d_start + d_size;
+            d_trigger_count = 0;
+            _adjust_tags(-d_start);
+        }
       }
     }
 
diff --git a/gr-qtgui/lib/time_sink_f_impl.cc b/gr-qtgui/lib/time_sink_f_impl.cc
index b3b1c59..dc88a0a 100644
--- a/gr-qtgui/lib/time_sink_f_impl.cc
+++ b/gr-qtgui/lib/time_sink_f_impl.cc
@@ -558,12 +558,15 @@ namespace gr {
                         nr, nr + nitems + 1,
                         d_trigger_tag_key);
       if(tags.size() > 0) {
-        d_triggered = true;
         trigger_index = tags[0].offset - nr;
-        d_start = d_index + trigger_index - d_trigger_delay - 1;
-        d_end = d_start + d_size;
-        d_trigger_count = 0;
-        _adjust_tags(-d_start);
+        int start = d_index + trigger_index - d_trigger_delay - 1;
+        if (start >= 0) {
+            d_triggered = true;
+            d_start = start;
+            d_end = d_start + d_size;
+            d_trigger_count = 0;
+            _adjust_tags(-d_start);
+        }
       }
     }
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]