From 33e00f9410d511162fe5cef00defbc1a93c503b9 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 21 Aug 2017 11:57:46 +0200 Subject: [PATCH] muxer: add muxer_config_free() to release new resources --- src/muxer.c | 17 ++++++++++++++++- src/muxer.h | 6 ++++-- 2 files changed, 20 insertions(+), 3 deletions(-) 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; } -- 2.47.3