Fixed selecting delivery system names in case of undefined indexes

This commit is contained in:
Klaus Schmidinger 2017-05-09 09:43:25 +02:00
parent dbcea07600
commit 4591dcad2c
3 changed files with 16 additions and 4 deletions

View File

@ -3417,6 +3417,7 @@ Jasmin Jessich <jasmin@anw.at>
assigned to any devices assigned to any devices
for writing the ddci2 plugin and for valuable input and help with testing and for writing the ddci2 plugin and for valuable input and help with testing and
debugging MTD support debugging MTD support
for fixing selecting delivery system names in case of undefined indexes
Martin Schirrmacher <schirrmie@gmail.com> Martin Schirrmacher <schirrmie@gmail.com>
for suggesting to provide a way for skin plugins to get informed about the currently for suggesting to provide a way for skin plugins to get informed about the currently

View File

@ -9015,3 +9015,5 @@ Video Disk Recorder Revision History
- Changed the default return value of cEpgHandler::BeginSegmentTransfer() to true, to - Changed the default return value of cEpgHandler::BeginSegmentTransfer() to true, to
avoid problems with derived classes that don't implement this function (reported by avoid problems with derived classes that don't implement this function (reported by
Frank Neumann). Frank Neumann).
- Fixed selecting delivery system names in case of undefined indexes (thanks to Jasmin
Jessich).

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: dvbdevice.c 4.10 2017/05/01 12:48:55 kls Exp $ * $Id: dvbdevice.c 4.11 2017/05/09 09:42:40 kls Exp $
*/ */
#include "dvbdevice.h" #include "dvbdevice.h"
@ -1299,6 +1299,15 @@ const char *DeliverySystemNames[] = {
NULL NULL
}; };
static const int DeliverySystemNamesMax = sizeof(DeliverySystemNames) / sizeof(DeliverySystemNames[0]) - 2; // -1 to get the maximum allowed index & -1 for the NULL => -2
static const char *GetDeliverySystemName(int Index)
{
if (Index > DeliverySystemNamesMax)
Index = 0;
return DeliverySystemNames[Index];
};
cDvbDevice::cDvbDevice(int Adapter, int Frontend) cDvbDevice::cDvbDevice(int Adapter, int Frontend)
{ {
adapter = Adapter; adapter = Adapter;
@ -1396,9 +1405,9 @@ cString cDvbDevice::DeviceType(void) const
{ {
if (dvbTuner) { if (dvbTuner) {
if (dvbTuner->FrontendType() != SYS_UNDEFINED) if (dvbTuner->FrontendType() != SYS_UNDEFINED)
return DeliverySystemNames[dvbTuner->FrontendType()]; return GetDeliverySystemName(dvbTuner->FrontendType());
if (numDeliverySystems) if (numDeliverySystems)
return DeliverySystemNames[deliverySystems[0]]; // to have some reasonable default return GetDeliverySystemName(deliverySystems[0]); // to have some reasonable default
} }
return ""; return "";
} }
@ -1529,7 +1538,7 @@ bool cDvbDevice::QueryDeliverySystems(int fd_frontend)
if (numDeliverySystems > 0) { if (numDeliverySystems > 0) {
cString ds(""); cString ds("");
for (int i = 0; i < numDeliverySystems; i++) for (int i = 0; i < numDeliverySystems; i++)
ds = cString::sprintf("%s%s%s", *ds, i ? "," : "", DeliverySystemNames[deliverySystems[i]]); ds = cString::sprintf("%s%s%s", *ds, i ? "," : "", GetDeliverySystemName(deliverySystems[i]));
cString ms(""); cString ms("");
if (frontendInfo.caps & FE_CAN_QPSK) { numModulations++; ms = cString::sprintf("%s%s%s", *ms, **ms ? "," : "", MapToUserString(QPSK, ModulationValues)); } if (frontendInfo.caps & FE_CAN_QPSK) { numModulations++; ms = cString::sprintf("%s%s%s", *ms, **ms ? "," : "", MapToUserString(QPSK, ModulationValues)); }
if (frontendInfo.caps & FE_CAN_QAM_16) { numModulations++; ms = cString::sprintf("%s%s%s", *ms, **ms ? "," : "", MapToUserString(QAM_16, ModulationValues)); } if (frontendInfo.caps & FE_CAN_QAM_16) { numModulations++; ms = cString::sprintf("%s%s%s", *ms, **ms ? "," : "", MapToUserString(QAM_16, ModulationValues)); }