diff options
author | Lincoln Ramsay <lincoln.ramsay@nokia.com> | 2012-05-28 12:04:34 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-28 04:58:32 +0200 |
commit | f6a6c002a6b549b77894caee46abb97b89268729 (patch) | |
tree | 9616eca8fcd9877784aa3c8cd1f0679d10c7573a /src | |
parent | 609615ffbc791f2ea938e5a514c8fdcc9e761f82 (diff) |
Check for Q_GLOBAL_STATIC returning 0 (QtSensors).
It's probably not very likely but during app shutdown, the
Q_GLOBAL_STATIC used in sensors will start returning 0. Check for this
to avoid the chance of a crash.
Change-Id: If2c235b158c36339e35e40074a5b33dbe21a7726
Reviewed-by: Lorn Potter <lorn.potter@nokia.com>
Reviewed-by: Zsolt Simon <zsolt.simon@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/sensors/qsensormanager.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/sensors/qsensormanager.cpp b/src/sensors/qsensormanager.cpp index 92c49009..83671620 100644 --- a/src/sensors/qsensormanager.cpp +++ b/src/sensors/qsensormanager.cpp @@ -172,6 +172,8 @@ static void initPlugin(QObject *o) if (!o) return; QSensorManagerPrivate *d = sensorManagerPrivate(); + if (!d) return; // hardly likely but just in case... + if (d->seenPlugins.contains(o)) return; @@ -242,6 +244,7 @@ void QSensorManager::registerBackend(const QByteArray &type, const QByteArray &i Q_ASSERT(identifier.count()); Q_ASSERT(factory); QSensorManagerPrivate *d = sensorManagerPrivate(); + if (!d) return; // hardly likely but just in case... if (!d->backendsByType.contains(type)) { (void)d->backendsByType[type]; d->firstIdentifierForType[type] = identifier; @@ -272,6 +275,7 @@ void QSensorManager::registerBackend(const QByteArray &type, const QByteArray &i void QSensorManager::unregisterBackend(const QByteArray &type, const QByteArray &identifier) { QSensorManagerPrivate *d = sensorManagerPrivate(); + if (!d) return; // hardly likely but just in case... if (!d->backendsByType.contains(type)) { qWarning() << "No backends of type" << type << "are registered"; return; @@ -316,6 +320,7 @@ QSensorBackend *QSensorManager::createBackend(QSensor *sensor) Q_ASSERT(sensor); QSensorManagerPrivate *d = sensorManagerPrivate(); + if (!d) return 0; // hardly likely but just in case... d->loadPlugins(); SENSORLOG() << "QSensorManager::createBackend" << "type" << sensor->type() << "identifier" << sensor->identifier(); @@ -376,6 +381,7 @@ QSensorBackend *QSensorManager::createBackend(QSensor *sensor) bool QSensorManager::isBackendRegistered(const QByteArray &type, const QByteArray &identifier) { QSensorManagerPrivate *d = sensorManagerPrivate(); + if (!d) return false; // hardly likely but just in case... d->loadPlugins(); if (!d->backendsByType.contains(type)) @@ -394,6 +400,7 @@ bool QSensorManager::isBackendRegistered(const QByteArray &type, const QByteArra void QSensorManager::setDefaultBackend(const QByteArray &type, const QByteArray &identifier) { QSensorManagerPrivate *d = sensorManagerPrivate(); + if (!d) return; // hardly likely but just in case... d->defaultIdentifierForType.insert(type, identifier); } @@ -406,6 +413,7 @@ void QSensorManager::setDefaultBackend(const QByteArray &type, const QByteArray QList<QByteArray> QSensor::sensorTypes() { QSensorManagerPrivate *d = sensorManagerPrivate(); + if (!d) return QList<QByteArray>(); // hardly likely but just in case... d->loadPlugins(); return d->backendsByType.keys(); @@ -418,6 +426,7 @@ QList<QByteArray> QSensor::sensorTypes() QList<QByteArray> QSensor::sensorsForType(const QByteArray &type) { QSensorManagerPrivate *d = sensorManagerPrivate(); + if (!d) return QList<QByteArray>(); // hardly likely but just in case... d->loadPlugins(); // no sensors of that type exist @@ -443,6 +452,7 @@ QList<QByteArray> QSensor::sensorsForType(const QByteArray &type) QByteArray QSensor::defaultSensorForType(const QByteArray &type) { QSensorManagerPrivate *d = sensorManagerPrivate(); + if (!d) return QByteArray(); // hardly likely but just in case... d->loadPlugins(); // no sensors of that type exist @@ -466,6 +476,7 @@ QByteArray QSensor::defaultSensorForType(const QByteArray &type) void QSensor::registerInstance() { QSensorManagerPrivate *d = sensorManagerPrivate(); + if (!d) return; // hardly likely but just in case... connect(d, SIGNAL(availableSensorsChanged()), this, SIGNAL(availableSensorsChanged())); } |