Browse Source

AP_Compass: cope with NULL dev pointer in driver probe functions

mission-4.1.18
Andrew Tridgell 8 years ago
parent
commit
bd8867be38
  1. 6
      libraries/AP_Compass/AP_Compass_AK8963.cpp
  2. 3
      libraries/AP_Compass/AP_Compass_BMM150.cpp
  3. 3
      libraries/AP_Compass/AP_Compass_HMC5843.cpp
  4. 3
      libraries/AP_Compass/AP_Compass_LSM303D.cpp
  5. 3
      libraries/AP_Compass/AP_Compass_LSM9DS1.cpp

6
libraries/AP_Compass/AP_Compass_AK8963.cpp

@ -69,6 +69,9 @@ AP_Compass_Backend *AP_Compass_AK8963::probe(Compass &compass, @@ -69,6 +69,9 @@ AP_Compass_Backend *AP_Compass_AK8963::probe(Compass &compass,
AP_HAL::OwnPtr<AP_HAL::I2CDevice> dev,
enum Rotation rotation)
{
if (!dev) {
return nullptr;
}
AP_AK8963_BusDriver *bus = new AP_AK8963_BusDriver_HALDevice(std::move(dev));
if (!bus) {
return nullptr;
@ -87,6 +90,9 @@ AP_Compass_Backend *AP_Compass_AK8963::probe_mpu9250(Compass &compass, @@ -87,6 +90,9 @@ AP_Compass_Backend *AP_Compass_AK8963::probe_mpu9250(Compass &compass,
AP_HAL::OwnPtr<AP_HAL::I2CDevice> dev,
enum Rotation rotation)
{
if (!dev) {
return nullptr;
}
AP_InertialSensor &ins = *AP_InertialSensor::get_instance();
/* Allow MPU9250 to shortcut auxiliary bus and host bus */

3
libraries/AP_Compass/AP_Compass_BMM150.cpp

@ -65,6 +65,9 @@ extern const AP_HAL::HAL &hal; @@ -65,6 +65,9 @@ extern const AP_HAL::HAL &hal;
AP_Compass_Backend *AP_Compass_BMM150::probe(Compass &compass,
AP_HAL::OwnPtr<AP_HAL::I2CDevice> dev)
{
if (!dev) {
return nullptr;
}
AP_Compass_BMM150 *sensor = new AP_Compass_BMM150(compass, std::move(dev));
if (!sensor || !sensor->init()) {
delete sensor;

3
libraries/AP_Compass/AP_Compass_HMC5843.cpp

@ -113,6 +113,9 @@ AP_Compass_Backend *AP_Compass_HMC5843::probe(Compass &compass, @@ -113,6 +113,9 @@ AP_Compass_Backend *AP_Compass_HMC5843::probe(Compass &compass,
bool force_external,
enum Rotation rotation)
{
if (!dev) {
return nullptr;
}
AP_HMC5843_BusDriver *bus = new AP_HMC5843_BusDriver_HALDevice(std::move(dev));
if (!bus) {
return nullptr;

3
libraries/AP_Compass/AP_Compass_LSM303D.cpp

@ -162,6 +162,9 @@ AP_Compass_LSM303D::AP_Compass_LSM303D(Compass &compass, AP_HAL::OwnPtr<AP_HAL:: @@ -162,6 +162,9 @@ AP_Compass_LSM303D::AP_Compass_LSM303D(Compass &compass, AP_HAL::OwnPtr<AP_HAL::
AP_Compass_Backend *AP_Compass_LSM303D::probe(Compass &compass,
AP_HAL::OwnPtr<AP_HAL::Device> dev)
{
if (!dev) {
return nullptr;
}
AP_Compass_LSM303D *sensor = new AP_Compass_LSM303D(compass, std::move(dev));
if (!sensor || !sensor->init()) {
delete sensor;

3
libraries/AP_Compass/AP_Compass_LSM9DS1.cpp

@ -60,6 +60,9 @@ extern const AP_HAL::HAL &hal; @@ -60,6 +60,9 @@ extern const AP_HAL::HAL &hal;
AP_Compass_Backend *AP_Compass_LSM9DS1::probe(Compass &compass,
AP_HAL::OwnPtr<AP_HAL::Device> dev)
{
if (!dev) {
return nullptr;
}
AP_Compass_LSM9DS1 *sensor = new AP_Compass_LSM9DS1(compass, std::move(dev));
if (!sensor || !sensor->init()) {
delete sensor;

Loading…
Cancel
Save