[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);
+ }
}
}