diff --git a/src/htsbuf.c b/src/htsbuf.c index 045fa071..f1b9bbae 100644 --- a/src/htsbuf.c +++ b/src/htsbuf.c @@ -51,6 +51,15 @@ htsbuf_queue_alloc(unsigned int maxsize) return hq; } +/** + * + */ +void +htsbuf_queue_free(htsbuf_queue_t *hq) +{ + htsbuf_queue_flush(hq); + free(hq); +} /** * diff --git a/src/htsbuf.h b/src/htsbuf.h index ae9a1322..b355ce1f 100644 --- a/src/htsbuf.h +++ b/src/htsbuf.h @@ -45,6 +45,8 @@ void htsbuf_queue_init(htsbuf_queue_t *hq, unsigned int maxsize); htsbuf_queue_t *htsbuf_queue_alloc(unsigned int maxsize); +void htsbuf_queue_free(htsbuf_queue_t *hq); + void htsbuf_queue_flush(htsbuf_queue_t *hq); void htsbuf_vqprintf(htsbuf_queue_t *hq, const char *fmt, va_list ap); diff --git a/src/htsp_server.c b/src/htsp_server.c index 86d528da..6b47911b 100644 --- a/src/htsp_server.c +++ b/src/htsp_server.c @@ -2359,6 +2359,7 @@ _htsp_channel_update(channel_t *ch, const char *method, htsmsg_t *msg) htsp_send_message(htsp, m, NULL); } } + htsmsg_destroy(msg); } /** @@ -2459,6 +2460,7 @@ _htsp_dvr_entry_update(dvr_entry_t *de, const char *method, htsmsg_t *msg) htsp_send_message(htsp, m, NULL); } } + htsmsg_destroy(msg); } /** @@ -2509,6 +2511,7 @@ _htsp_event_update(epg_broadcast_t *ebc, const char *method, htsmsg_t *msg) htsp_send_message(htsp, m, NULL); } } + htsmsg_destroy(msg); } /** diff --git a/src/main.c b/src/main.c index 4216fee2..c419af2a 100644 --- a/src/main.c +++ b/src/main.c @@ -854,12 +854,12 @@ main(int argc, char **argv) tvhftrace("main", epggrab_done); tvhftrace("main", tcp_server_done); - tvhftrace("main", subscription_done); tvhftrace("main", descrambler_done); tvhftrace("main", service_mapper_done); tvhftrace("main", service_done); tvhftrace("main", channel_done); tvhftrace("main", dvr_done); + tvhftrace("main", subscription_done); tvhftrace("main", access_done); tvhftrace("main", epg_done); tvhftrace("main", avahi_done); diff --git a/src/muxer/muxer_tvh.c b/src/muxer/muxer_tvh.c index 1049c847..cffc9069 100644 --- a/src/muxer/muxer_tvh.c +++ b/src/muxer/muxer_tvh.c @@ -210,7 +210,7 @@ tvh_muxer_destroy(muxer_t *m) tvh_muxer_t *tm = (tvh_muxer_t*)m; if(tm->tm_ref) - free(tm->tm_ref); + mk_mux_destroy(tm->tm_ref); free(tm); } diff --git a/src/muxer/tvh/mkmux.c b/src/muxer/tvh/mkmux.c index 4925039d..4c9366c4 100644 --- a/src/muxer/tvh/mkmux.c +++ b/src/muxer/tvh/mkmux.c @@ -514,7 +514,10 @@ mk_build_segment_header(int64_t size) static void mk_write_segment_header(mk_mux_t *mkm, int64_t size) { - mk_write_queue(mkm, mk_build_segment_header(size)); + htsbuf_queue_t *q; + q = mk_build_segment_header(size); + mk_write_queue(mkm, q); + htsbuf_queue_free(q); } @@ -1064,7 +1067,7 @@ mk_mux_open_file(mk_mux_t *mkm, const char *filename) int mk_mux_init(mk_mux_t *mkm, const char *title, const streaming_start_t *ss) { - htsbuf_queue_t q; + htsbuf_queue_t q, *a; getuuid(mkm->uuid); @@ -1081,10 +1084,14 @@ mk_mux_init(mk_mux_t *mkm, const char *title, const streaming_start_t *ss) ebml_append_master(&q, 0x1a45dfa3, mk_build_ebmlheader(mkm)); mkm->segment_header_pos = q.hq_size; - htsbuf_appendq(&q, mk_build_segment_header(0)); + a = mk_build_segment_header(0); + htsbuf_appendq(&q, a); + htsbuf_queue_free(a); mkm->segment_pos = q.hq_size; - htsbuf_appendq(&q, mk_build_segment(mkm, ss)); + a = mk_build_segment(mkm, ss); + htsbuf_appendq(&q, a); + htsbuf_queue_free(a); mk_write_queue(mkm, &q); diff --git a/src/parsers/parser_avc.c b/src/parsers/parser_avc.c index 1093dcab..54a08917 100644 --- a/src/parsers/parser_avc.c +++ b/src/parsers/parser_avc.c @@ -27,7 +27,7 @@ avc_find_startcode(const uint8_t *p, const uint8_t *end) int i; uint32_t sc=0xFFFFFFFF; - size_t len = (end -p)+1; + size_t len = end - p; for (i=0;i