From: Jaroslav Kysela Date: Mon, 21 Aug 2017 09:57:46 +0000 (+0200) Subject: muxer: add muxer_config_free() to release new resources X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=33e00f9410d511162fe5cef00defbc1a93c503b9;p=thirdparty%2Ftvheadend.git muxer: add muxer_config_free() to release new resources --- diff --git a/src/muxer.c b/src/muxer.c index 7cbba9d33..af6449f85 100644 --- a/src/muxer.c +++ b/src/muxer.c @@ -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; } diff --git a/src/muxer.h b/src/muxer.h index 030ad2314..8cf565245 100644 --- a/src/muxer.h +++ b/src/muxer.h @@ -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; }