Fix possible crashes in QDeclarativeRadioData.

It would crash when accessing any of its properties when there is no
radio backend available.

Task-number: QTBUG-47859
Change-Id: Ic7c0a70ca3e9a4768359b3429ea812caece09fce
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
This commit is contained in:
Yoann Lopes
2015-08-24 15:06:53 +02:00
parent 008d20e0ec
commit ded4d7b006

View File

@@ -129,7 +129,10 @@ QDeclarativeRadioData::~QDeclarativeRadioData()
*/ */
QDeclarativeRadioData::Availability QDeclarativeRadioData::availability() const QDeclarativeRadioData::Availability QDeclarativeRadioData::availability() const
{ {
return Availability(m_radioData->availability()); if (m_radioData)
return Availability(m_radioData->availability());
return Unavailable;
} }
@@ -141,7 +144,10 @@ QDeclarativeRadioData::Availability QDeclarativeRadioData::availability() const
*/ */
QString QDeclarativeRadioData::stationId() const QString QDeclarativeRadioData::stationId() const
{ {
return m_radioData->stationId(); if (m_radioData)
return m_radioData->stationId();
return QString();
} }
/*! /*!
@@ -206,7 +212,10 @@ QString QDeclarativeRadioData::stationId() const
*/ */
QDeclarativeRadioData::ProgramType QDeclarativeRadioData::programType() const QDeclarativeRadioData::ProgramType QDeclarativeRadioData::programType() const
{ {
return static_cast<QDeclarativeRadioData::ProgramType>(m_radioData->programType()); if (m_radioData)
return static_cast<QDeclarativeRadioData::ProgramType>(m_radioData->programType());
return Undefined;
} }
/*! /*!
@@ -216,7 +225,10 @@ QDeclarativeRadioData::ProgramType QDeclarativeRadioData::programType() const
*/ */
QString QDeclarativeRadioData::programTypeName() const QString QDeclarativeRadioData::programTypeName() const
{ {
return m_radioData->programTypeName(); if (m_radioData)
return m_radioData->programTypeName();
return QString();
} }
/*! /*!
@@ -226,7 +238,10 @@ QString QDeclarativeRadioData::programTypeName() const
*/ */
QString QDeclarativeRadioData::stationName() const QString QDeclarativeRadioData::stationName() const
{ {
return m_radioData->stationName(); if (m_radioData)
return m_radioData->stationName();
return QString();
} }
/*! /*!
@@ -238,7 +253,10 @@ QString QDeclarativeRadioData::stationName() const
*/ */
QString QDeclarativeRadioData::radioText() const QString QDeclarativeRadioData::radioText() const
{ {
return m_radioData->radioText(); if (m_radioData)
return m_radioData->radioText();
return QString();
} }
/*! /*!
@@ -250,12 +268,16 @@ QString QDeclarativeRadioData::radioText() const
*/ */
bool QDeclarativeRadioData::alternativeFrequenciesEnabled() const bool QDeclarativeRadioData::alternativeFrequenciesEnabled() const
{ {
return m_radioData->isAlternativeFrequenciesEnabled(); if (m_radioData)
return m_radioData->isAlternativeFrequenciesEnabled();
return false;
} }
void QDeclarativeRadioData::setAlternativeFrequenciesEnabled(bool enabled) void QDeclarativeRadioData::setAlternativeFrequenciesEnabled(bool enabled)
{ {
m_radioData->setAlternativeFrequenciesEnabled(enabled); if (m_radioData)
m_radioData->setAlternativeFrequenciesEnabled(enabled);
} }
void QDeclarativeRadioData::_q_programTypeChanged(QRadioData::ProgramType programType) void QDeclarativeRadioData::_q_programTypeChanged(QRadioData::ProgramType programType)