From ded4d7b006180d12f4f2e7642877ffc6586a5331 Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Mon, 24 Aug 2015 15:06:53 +0200 Subject: 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 --- src/imports/multimedia/qdeclarativeradiodata.cpp | 38 +++++++++++++++++++----- 1 file changed, 30 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/imports/multimedia/qdeclarativeradiodata.cpp b/src/imports/multimedia/qdeclarativeradiodata.cpp index 51d3bb877..f272e8d09 100644 --- a/src/imports/multimedia/qdeclarativeradiodata.cpp +++ b/src/imports/multimedia/qdeclarativeradiodata.cpp @@ -129,7 +129,10 @@ QDeclarativeRadioData::~QDeclarativeRadioData() */ 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 { - 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 { - return static_cast(m_radioData->programType()); + if (m_radioData) + return static_cast(m_radioData->programType()); + + return Undefined; } /*! @@ -216,7 +225,10 @@ QDeclarativeRadioData::ProgramType QDeclarativeRadioData::programType() 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 { - 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 { - 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 { - return m_radioData->isAlternativeFrequenciesEnabled(); + if (m_radioData) + return m_radioData->isAlternativeFrequenciesEnabled(); + + return false; } void QDeclarativeRadioData::setAlternativeFrequenciesEnabled(bool enabled) { - m_radioData->setAlternativeFrequenciesEnabled(enabled); + if (m_radioData) + m_radioData->setAlternativeFrequenciesEnabled(enabled); } void QDeclarativeRadioData::_q_programTypeChanged(QRadioData::ProgramType programType) -- cgit v1.2.3