summaryrefslogtreecommitdiff
path: root/gr-fec
diff options
context:
space:
mode:
authorTom Rondeau <tom@trondeau.com>2014-05-21 12:09:07 -0400
committerTom Rondeau <tom@trondeau.com>2014-05-21 12:09:07 -0400
commitcba2d184e2abb8a52353929a34b562ea4f9bd031 (patch)
tree226b3a032ea35d896744c1bfb0a28c4331367457 /gr-fec
parent47506477c57f114d42ad8bf9594fb32da8ba4d87 (diff)
fec: fixing a bit of sloppy memory handling in the cc decoder.
Diffstat (limited to 'gr-fec')
-rw-r--r--gr-fec/lib/cc_decoder_impl.cc14
1 files changed, 9 insertions, 5 deletions
diff --git a/gr-fec/lib/cc_decoder_impl.cc b/gr-fec/lib/cc_decoder_impl.cc
index 6739f7bf3d..4657d16d17 100644
--- a/gr-fec/lib/cc_decoder_impl.cc
+++ b/gr-fec/lib/cc_decoder_impl.cc
@@ -83,9 +83,9 @@ namespace gr {
switch(d_mode) {
case(CC_TAILBITING):
d_end_state = &d_end_state_chaining;
+ d_veclen = d_frame_size + (6 * (d_k - 1));
d_managed_in = (unsigned char*)volk_malloc(d_veclen*d_rate*sizeof(unsigned char),
volk_get_alignment());
- d_veclen = d_frame_size + (6 * (d_k - 1));
d_managed_in_size = d_veclen * d_rate;
if(d_managed_in == NULL) {
throw std::runtime_error("cc_decoder: bad alloc for d_managed_in\n");
@@ -120,7 +120,7 @@ namespace gr {
d_vp->metrics1.t = d_vp->metrics;
d_vp->metrics2.t = d_vp->metrics + d_numstates;
- d_vp->decisions = (unsigned char*)volk_malloc(d_veclen*d_decision_t_size,
+ d_vp->decisions = (unsigned char*)volk_malloc(sizeof(unsigned char)*d_veclen*d_decision_t_size,
volk_get_alignment());
if(d_vp->decisions == NULL) {
throw std::runtime_error("bad alloc for d_vp->decisions!\n");
@@ -160,9 +160,13 @@ namespace gr {
cc_decoder_impl::~cc_decoder_impl()
{
- free(d_vp->decisions);
- free(Branchtab);
- free(d_vp->metrics);
+ volk_free(d_vp->decisions);
+ volk_free(Branchtab);
+ volk_free(d_vp->metrics);
+
+ if(d_mode == CC_TAILBITING) {
+ volk_free(d_managed_in);
+ }
}
int