From fbf7a3da3c1032dfbceca4e85ddcad61269ff454 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 14 Nov 2014 19:05:22 +0100 Subject: [PATCH] mpegts input: add back last_mp, it should be safe The PID subscriptions are protected using mi_output lock, so the whole mpegts_input_process() subroutine should be safe for the mp structure caching. --- src/input/mpegts/mpegts_input.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/input/mpegts/mpegts_input.c b/src/input/mpegts/mpegts_input.c index f6a466d8..82d9cb37 100644 --- a/src/input/mpegts/mpegts_input.c +++ b/src/input/mpegts/mpegts_input.c @@ -734,7 +734,7 @@ mpegts_input_process uint8_t cc; uint8_t *tsb = mpkt->mp_data; int len = mpkt->mp_len; - int table, stream, f; + int table = 0, stream = 0, f; mpegts_pid_t *mp; mpegts_pid_sub_t *mps; service_t *s; @@ -768,6 +768,7 @@ mpegts_input_process /* Ignore NUL packets */ if (pid == 0x1FFF) goto done; + /* Remove in future or move it outside this loop */ lock_assert(&mi->mi_output_lock); /* Find PID */ @@ -783,10 +784,8 @@ mpegts_input_process mp->mp_cc = (cc + 1) & 0xF; } - // Note: there is a minor danger this caching will get things - // wrong for a brief period of time if the registrations on - // the PID change if (mp != last_mp) { + last_mp = mp; if (pid == 0) { stream = MPS_STREAM; table = MPS_TABLE;