From d18fc1a422d139bdd9380b45627a5612c25b4788 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 12 Dec 2014 08:50:43 +0100 Subject: [PATCH] tsdebug: avoid I/O when file descriptors are not set --- src/input/mpegts.h | 6 +++--- src/input/mpegts/mpegts_input.c | 17 ++++++++++------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/input/mpegts.h b/src/input/mpegts.h index a59b38b5..c5ea0148 100644 --- a/src/input/mpegts.h +++ b/src/input/mpegts.h @@ -823,9 +823,9 @@ static inline void tsdebug_write(mpegts_mux_t *mm, uint8_t *buf, size_t len) { #if ENABLE_TSDEBUG - ssize_t r = write(mm->mm_tsdebug_fd2, buf, len); - if (r != len && mm->mm_tsdebug_fd2 >= 0) - tvherror("tsdebug", "unable to write input data (%i)", errno); + if (mm->mm_tsdebug_fd2 >= 0) + if (write(mm->mm_tsdebug_fd2, buf, len) != len) + tvherror("tsdebug", "unable to write input data (%i)", errno); #endif } diff --git a/src/input/mpegts/mpegts_input.c b/src/input/mpegts/mpegts_input.c index 12ff03bd..6896a0e7 100644 --- a/src/input/mpegts/mpegts_input.c +++ b/src/input/mpegts/mpegts_input.c @@ -566,13 +566,16 @@ mpegts_input_stopped_mux #if ENABLE_TSDEBUG tsdebug_packet_t *tp; - close(mmi->mmi_mux->mm_tsdebug_fd); - close(mmi->mmi_mux->mm_tsdebug_fd2); - mmi->mmi_mux->mm_tsdebug_fd = -1; - mmi->mmi_mux->mm_tsdebug_fd2 = -1; - mmi->mmi_mux->mm_tsdebug_pos = 0; - while ((tp = TAILQ_FIRST(&mmi->mmi_mux->mm_tsdebug_packets)) != NULL) { - TAILQ_REMOVE(&mmi->mmi_mux->mm_tsdebug_packets, tp, link); + mpegts_mux_t *mm = mmi->mmi_mux; + if (mm->mm_tsdebug_fd >= 0) + close(mm->mm_tsdebug_fd); + if (mm->mm_tsdebug_fd2 >= 0) + close(mm->mm_tsdebug_fd2); + mm->mm_tsdebug_fd = -1; + mm->mm_tsdebug_fd2 = -1; + mm->mm_tsdebug_pos = 0; + while ((tp = TAILQ_FIRST(&mm->mm_tsdebug_packets)) != NULL) { + TAILQ_REMOVE(&mm->mm_tsdebug_packets, tp, link); free(tp); } #endif