diff --git a/src/input/mpegts/mpegts_input.c b/src/input/mpegts/mpegts_input.c index 56e423a4..6c2483c1 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 3c43f0bf..9c9aa054 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);