From: Jaroslav Kysela Date: Mon, 5 Mar 2018 20:21:54 +0000 (+0100) Subject: mpegts pid: another fix in mpegts_pid_weighted() X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5bb2c4febfa249566c89e64668218579540e082d;p=thirdparty%2Ftvheadend.git mpegts pid: another fix in mpegts_pid_weighted() --- diff --git a/src/input/mpegts/mpegts_pid.c b/src/input/mpegts/mpegts_pid.c index d5a4b006a..dcd06abc3 100644 --- a/src/input/mpegts/mpegts_pid.c +++ b/src/input/mpegts/mpegts_pid.c @@ -340,9 +340,9 @@ mpegts_pid_compare_weight(mpegts_apids_t *dst, mpegts_apids_t *src, int mpegts_pid_weighted(mpegts_apids_t *dst, mpegts_apids_t *pids, int limit) { - int i; + int i, j; mpegts_apids_t sorted; - uint16_t pid; + mpegts_apid_t *p; mpegts_pid_init(&sorted); mpegts_pid_copy(&sorted, pids); @@ -350,9 +350,12 @@ mpegts_pid_weighted(mpegts_apids_t *dst, mpegts_apids_t *pids, int limit) mpegts_pid_init(dst); for (i = 0; i < sorted.count && dst->count < limit; i++) { - pid = sorted.pids[i].pid; - if (mpegts_pid_find_rindex(dst, pid) < 0) - mpegts_pid_add(dst, pid, sorted.pids[i].weight); + p = &sorted.pids[i]; + j = mpegts_pid_find_rindex(dst, p->pid); + if (j < 0) + mpegts_pid_add(dst, p->pid, p->weight); + else + mpegts_pid_update_max_weight_by_index(dst, j, p->weight); } dst->all = pids->all;