From 1f1c1563324284b9ca4249d931023e0df6c4f077 Mon Sep 17 00:00:00 2001
From: Anders Blomdell <anders.blomdell@control.lth.se>
Date: Mon, 25 May 2015 21:54:02 +0200
Subject: [PATCH] Bug fixes to renaming encoders/decoders

---
 lib/c/2014/labcomm2014_renaming_decoder.c | 11 +++++++++--
 lib/c/2014/labcomm2014_renaming_encoder.c |  2 +-
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/lib/c/2014/labcomm2014_renaming_decoder.c b/lib/c/2014/labcomm2014_renaming_decoder.c
index acd8d35..4243438 100644
--- a/lib/c/2014/labcomm2014_renaming_decoder.c
+++ b/lib/c/2014/labcomm2014_renaming_decoder.c
@@ -147,6 +147,13 @@ static int do_ioctl(struct labcomm2014_decoder *d,
                          ioctl_action, args);
 }
 
+static int do_decode_one(struct labcomm2014_decoder *d)
+{
+  struct decoder *id = d->context;
+
+  return id->next->decode_one(id->next);
+}
+
 static const struct labcomm2014_sample_ref *do_index_to_sample_ref(
   struct labcomm2014_decoder *d, int index)
 {
@@ -201,12 +208,12 @@ struct labcomm2014_decoder *labcomm2014_renaming_decoder_new(
     return NULL;
   } else {
       result->decoder.context = result;
-      result->decoder.reader = NULL;
+      result->decoder.reader = d->reader;
       result->decoder.error = d->error;
       result->decoder.memory = d->memory;
       result->decoder.scheduler = d->scheduler;
       result->decoder.free = do_free;
-      result->decoder.decode_one = d->decode_one;
+      result->decoder.decode_one = do_decode_one;
       result->decoder.sample_register = do_sample_register;
       result->decoder.ref_register = do_ref_register;
       result->decoder.ioctl = do_ioctl;
diff --git a/lib/c/2014/labcomm2014_renaming_encoder.c b/lib/c/2014/labcomm2014_renaming_encoder.c
index feaa330..b84eaaf 100644
--- a/lib/c/2014/labcomm2014_renaming_encoder.c
+++ b/lib/c/2014/labcomm2014_renaming_encoder.c
@@ -263,7 +263,7 @@ struct labcomm2014_encoder *labcomm2014_renaming_encoder_new(
     return NULL;
   } else {
       result->encoder.context = result;
-      result->encoder.writer = NULL;
+      result->encoder.writer = e->writer;
       result->encoder.error = e->error;
       result->encoder.memory = e->memory;
       result->encoder.scheduler = e->scheduler;
-- 
GitLab