[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] [gnuradio] 01/01: gr-dtv: Fix segfault in DVB-T interl
From: |
git |
Subject: |
[Commit-gnuradio] [gnuradio] 01/01: gr-dtv: Fix segfault in DVB-T interleaver and deinterleaver. |
Date: |
Sat, 6 Aug 2016 22:28:33 +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 87846f81b939ab8fa32ffaf4da3cd9a869039a95
Author: Ron Economos <address@hidden>
Date: Wed Aug 3 21:15:35 2016 -0700
gr-dtv: Fix segfault in DVB-T interleaver and deinterleaver.
---
gnuradio-runtime/include/gnuradio/attributes.h | 8 +++-----
gr-dtv/lib/dvbt/dvbt_bit_inner_deinterleaver_impl.cc | 10 ++++++----
gr-dtv/lib/dvbt/dvbt_bit_inner_interleaver_impl.cc | 8 +++++---
3 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/gnuradio-runtime/include/gnuradio/attributes.h
b/gnuradio-runtime/include/gnuradio/attributes.h
index 0102c11..250683f 100644
--- a/gnuradio-runtime/include/gnuradio/attributes.h
+++ b/gnuradio-runtime/include/gnuradio/attributes.h
@@ -81,12 +81,10 @@
////////////////////////////////////////////////////////////////////////
// implement cross-compiler VLA macros
////////////////////////////////////////////////////////////////////////
-#ifdef C99
-# define __GR_VLA(TYPE, buf, size) TYPE buf[size]
-# define __GR_VLA2D(TYPE, buf, size, size2) TYPE buf[size][size2]
-#else
+#ifdef _MSC_VER
# define __GR_VLA(TYPE, buf, size) TYPE * buf = (TYPE *) alloca(sizeof(TYPE)
* (size))
-# define __GR_VLA2D(TYPE, buf, size, size2) TYPE ** buf = (TYPE **)
alloca(sizeof(TYPE) * (size) * (size2))
+#else
+# define __GR_VLA(TYPE, buf, size) TYPE buf[size]
#endif
#endif /* INCLUDED_GNURADIO_ATTRIBUTES_H */
diff --git a/gr-dtv/lib/dvbt/dvbt_bit_inner_deinterleaver_impl.cc
b/gr-dtv/lib/dvbt/dvbt_bit_inner_deinterleaver_impl.cc
index 9e45c81..c10a77c 100644
--- a/gr-dtv/lib/dvbt/dvbt_bit_inner_deinterleaver_impl.cc
+++ b/gr-dtv/lib/dvbt/dvbt_bit_inner_deinterleaver_impl.cc
@@ -26,10 +26,13 @@
#include "dvbt_bit_inner_deinterleaver_impl.h"
#include <stdio.h>
+#define MAX_MODULATION_ORDER 6
+#define INTERLEAVER_BLOCK_SIZE 126
+
namespace gr {
namespace dtv {
- const int dvbt_bit_inner_deinterleaver_impl::d_bsize = 126;
+ const int dvbt_bit_inner_deinterleaver_impl::d_bsize =
INTERLEAVER_BLOCK_SIZE;
int
dvbt_bit_inner_deinterleaver_impl::H(int e, int w)
@@ -135,9 +138,8 @@ namespace gr {
// First index of d_b is Bit interleaver number
// Second index of d_b is the position inside Bit interleaver
- // Linux: unsigned char d_b[d_v][d_bsize];
- __GR_VLA2D(unsigned char, d_b, d_v, d_bsize);
-
+ unsigned char d_b[MAX_MODULATION_ORDER][INTERLEAVER_BLOCK_SIZE];
+
for (int bcount = 0; bcount < bmax; bcount++) {
for (int w = 0; w < d_bsize; w++) {
int c = in[(bcount * d_bsize) + w];
diff --git a/gr-dtv/lib/dvbt/dvbt_bit_inner_interleaver_impl.cc
b/gr-dtv/lib/dvbt/dvbt_bit_inner_interleaver_impl.cc
index a5a9847..43146f0 100644
--- a/gr-dtv/lib/dvbt/dvbt_bit_inner_interleaver_impl.cc
+++ b/gr-dtv/lib/dvbt/dvbt_bit_inner_interleaver_impl.cc
@@ -26,10 +26,13 @@
#include "dvbt_bit_inner_interleaver_impl.h"
#include <stdio.h>
+#define MAX_MODULATION_ORDER 6
+#define INTERLEAVER_BLOCK_SIZE 126
+
namespace gr {
namespace dtv {
- const int dvbt_bit_inner_interleaver_impl::d_bsize = 126;
+ const int dvbt_bit_inner_interleaver_impl::d_bsize =
INTERLEAVER_BLOCK_SIZE;
int
dvbt_bit_inner_interleaver_impl::H(int e, int w)
@@ -137,8 +140,7 @@ namespace gr {
// First index of d_b is Bit interleaver number
// Second index of d_b is the position inside the Bit interleaver
- // Linux: unsigned char d_b[d_v][d_bsize];
- __GR_VLA2D(unsigned char, d_b, d_v, d_bsize);
+ unsigned char d_b[MAX_MODULATION_ORDER][INTERLEAVER_BLOCK_SIZE];
for (int bcount = 0; bcount < bmax; bcount++) {
for (int i = 0; i < d_bsize; i++) {