From: Jaroslav Kysela Date: Tue, 28 Oct 2014 20:02:39 +0000 (+0100) Subject: mpegts input: mm_active cleanups, fix also memory leak introduced by mi_stop X-Git-Tag: v4.1~880 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=863ea6f707ac3e5a9420467c4207d03e91771c6b;p=thirdparty%2Ftvheadend.git mpegts input: mm_active cleanups, fix also memory leak introduced by mi_stop --- diff --git a/src/input/mpegts/mpegts_input.c b/src/input/mpegts/mpegts_input.c index 56e423a4a..6c2483c13 100644 --- a/src/input/mpegts/mpegts_input.c +++ b/src/input/mpegts/mpegts_input.c @@ -605,6 +605,8 @@ mpegts_input_recv_packets if (!mi->mi_stop) { TAILQ_INSERT_TAIL(&mi->mi_input_queue, mp, mp_link); pthread_cond_signal(&mi->mi_input_cond); + } else { + free(mp); } pthread_mutex_unlock(&mi->mi_input_lock); } @@ -718,6 +720,8 @@ mpegts_input_process mpegts_mux_instance_t *mmi = mm->mm_active; mpegts_pid_t *last_mp = NULL; + assert(mmi); + mi->mi_live = 1; /* Process */ diff --git a/src/input/mpegts/mpegts_mux.c b/src/input/mpegts/mpegts_mux.c index 3c43f0bfd..9c9aa054c 100644 --- a/src/input/mpegts/mpegts_mux.c +++ b/src/input/mpegts/mpegts_mux.c @@ -692,9 +692,6 @@ mpegts_mux_stop ( mpegts_mux_t *mm, int force ) /* Stop possible recursion */ if (!mmi) return; - /* Clear */ - mm->mm_active = NULL; - mpegts_mux_nice_name(mm, buf, sizeof(buf)); tvhdebug("mpegts", "%s - stopping mux", buf); @@ -706,6 +703,8 @@ mpegts_mux_stop ( mpegts_mux_t *mm, int force ) mi->mi_stop_mux(mi, mmi); mi->mi_stopped_mux(mi, mmi); + assert(mm->mm_active == NULL); + /* Flush all tables */ tvhtrace("mpegts", "%s - flush tables", buf); mpegts_table_flush_all(mm);