]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
muxer: add muxer_config_free() to release new resources
authorJaroslav Kysela <perex@perex.cz>
Mon, 21 Aug 2017 09:57:46 +0000 (11:57 +0200)
committerJaroslav Kysela <perex@perex.cz>
Tue, 22 Aug 2017 08:14:58 +0000 (10:14 +0200)
src/muxer.c
src/muxer.h

index 7cbba9d3328f9791faf0b81090db328ac971e598..af6449f85e026e56653dd6752b7f1207fa89e259 100644 (file)
@@ -270,11 +270,25 @@ muxer_config_copy(muxer_config_t *dst, const muxer_config_t *src)
 }
 
 
+/**
+ * Copy muxer settings
+ */
+void
+muxer_config_free(muxer_config_t *m_cfg)
+{
+  if (m_cfg->m_type == MC_RAW || m_cfg->m_type == MC_PASS) {
+    free(m_cfg->u.pass.m_cmdline);
+    free(m_cfg->u.pass.m_mime);
+  }
+  memset(m_cfg, 0, sizeof(*m_cfg));
+}
+
+
 /**
  * Create a new muxer
  */
 muxer_t* 
-muxer_create(const muxer_config_t *m_cfg)
+muxer_create(muxer_config_t *m_cfg)
 {
   muxer_t *m;
 
@@ -300,6 +314,7 @@ muxer_create(const muxer_config_t *m_cfg)
   }
   
   memcpy(&m->m_config, m_cfg, sizeof(muxer_config_t));
+  memset(m_cfg, 0, sizeof(*m_cfg));
 
   return m;
 }
index 030ad23149a0da5b0029590f7e5a48698921ab9b..8cf5652458808cd3a393a1a05bdc2402c5dcd0c8 100644 (file)
@@ -127,10 +127,12 @@ muxer_container_type_t muxer_container_mime2type (const char *str);
 const char*            muxer_container_suffix(muxer_container_type_t mc, int video);
 
 /* Muxer factory */
-muxer_t *muxer_create(const muxer_config_t *m_cfg);
+muxer_t *muxer_create(muxer_config_t *m_cfg);
 
 void muxer_config_copy(muxer_config_t *dst, const muxer_config_t *src);
 
+void muxer_config_free(muxer_config_t *m_cfg);
+
 /* Wrapper functions */
 static inline int muxer_open_file (muxer_t *m, const char *filename)
   { if(m && filename) return m->m_open_file(m, filename); return -1; }
@@ -151,7 +153,7 @@ static inline int muxer_close (muxer_t *m)
   { if (m) return m->m_close(m); return -1; }
 
 static inline int muxer_destroy (muxer_t *m)
-  { if (m) { m->m_destroy(m); return 0; } return -1; }
+  { if (m) { m->m_destroy(m); muxer_config_free(&m->m_config); return 0; } return -1; }
 
 static inline int muxer_write_meta (muxer_t *m, struct epg_broadcast *eb, const char *comment)
   { if (m) return m->m_write_meta(m, eb, comment); return -1; }