From ec6e42ba3d82ffaca24c2debd010111a60628408 Mon Sep 17 00:00:00 2001
From: Jean-Marc Valin <jmvalin@amazon.com>
Date: Wed, 31 May 2023 15:57:37 -0400
Subject: [PATCH] misc fixes

---
 dnn/lpcnet_demo.c          | 4 ++++
 dnn/lpcnet_plc.c           | 4 +++-
 dnn/parse_lpcnet_weights.c | 4 ++++
 3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/dnn/lpcnet_demo.c b/dnn/lpcnet_demo.c
index b88176f4d..cf62ad3d4 100644
--- a/dnn/lpcnet_demo.c
+++ b/dnn/lpcnet_demo.c
@@ -225,6 +225,9 @@ int main(int argc, char **argv) {
         LPCNetPLCState *net;
         if ((plc_flags&0x3) == LPCNET_PLC_NONCAUSAL) skip=extra=80;
         net = lpcnet_plc_create(plc_flags);
+#ifdef USE_WEIGHTS_FILE
+        lpcnet_plc_load_model(net, data, len);
+#endif
         while (1) {
             size_t ret;
             ret = fread(pcm, sizeof(pcm[0]), FRAME_SIZE, fin);
@@ -260,6 +263,7 @@ int main(int argc, char **argv) {
     }
     fclose(fin);
     fclose(fout);
+    if (plc_file) fclose(plc_file);
 #ifdef USE_WEIGHTS_FILE
     free_blob(data, len);
 #endif
diff --git a/dnn/lpcnet_plc.c b/dnn/lpcnet_plc.c
index cd9d69201..1e27fb064 100644
--- a/dnn/lpcnet_plc.c
+++ b/dnn/lpcnet_plc.c
@@ -83,7 +83,9 @@ LPCNET_EXPORT int lpcnet_plc_load_model(LPCNetPLCState *st, const unsigned char
   parse_weights(&list, data, len);
   ret = init_plc_model(&st->model, list);
   free(list);
-  if (ret == 0) return 0;
+  if (ret == 0) {
+    return lpcnet_load_model(&st->lpcnet, data, len);
+  }
   else return -1;
 }
 
diff --git a/dnn/parse_lpcnet_weights.c b/dnn/parse_lpcnet_weights.c
index 414270661..c830a13c5 100644
--- a/dnn/parse_lpcnet_weights.c
+++ b/dnn/parse_lpcnet_weights.c
@@ -66,6 +66,10 @@ int parse_weights(WeightArray **list, const unsigned char *data, int len)
         *list = realloc(*list, capacity*sizeof(WeightArray));
       }
       (*list)[nb_arrays++] = array;
+    } else {
+      free(*list);
+      *list = NULL;
+      return -1;
     }
   }
   (*list)[nb_arrays].name=NULL;
-- 
GitLab