From 9b68c100b2d221224382fe139599828f3ea663b7 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Thu, 8 Mar 2012 09:37:17 +0100 Subject: [PATCH] Fixed parsing channel data in case the audio pid is 0 --- HISTORY | 4 ++++ channels.c | 8 +++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/HISTORY b/HISTORY index a79267b0..cfd4b912 100644 --- a/HISTORY +++ b/HISTORY @@ -6989,3 +6989,7 @@ Video Disk Recorder Revision History due to a live channel switch, it can use that function's new parameter LiveView. Any plugins that implement cStatus::ChannelSwitch() need to add the parameter 'bool LiveView' to that function. +- Fixed parsing channel data in case the audio pid is 0. On channels that only + broadcast Dolby Digital audio there were sometimes log entries like + "changing pids of channel ... from ... to ..." with no apparent difference + between the old and new set of pids. diff --git a/channels.c b/channels.c index b9204f28..04e1e378 100644 --- a/channels.c +++ b/channels.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: channels.c 2.19 2011/08/26 12:44:21 kls Exp $ + * $Id: channels.c 2.20 2012/03/07 16:50:15 kls Exp $ */ #include "channels.h" @@ -619,7 +619,8 @@ bool cChannel::Parse(const char *s) } else *alangs[NumApids] = 0; - apids[NumApids++] = strtol(q, NULL, 10); + if ((apids[NumApids] = strtol(q, NULL, 10)) != 0) + NumApids++; } else esyslog("ERROR: too many APIDs!"); // no need to set ok to 'false' @@ -647,7 +648,8 @@ bool cChannel::Parse(const char *s) } else *dlangs[NumDpids] = 0; - dpids[NumDpids++] = strtol(q, NULL, 10); + if ((dpids[NumDpids] = strtol(q, NULL, 10)) != 0) + NumDpids++; } else esyslog("ERROR: too many DPIDs!"); // no need to set ok to 'false'