diff --git a/libraries/AP_Compass/AP_Compass_AK8963.cpp b/libraries/AP_Compass/AP_Compass_AK8963.cpp index 9631c4123e..ab1023e231 100644 --- a/libraries/AP_Compass/AP_Compass_AK8963.cpp +++ b/libraries/AP_Compass/AP_Compass_AK8963.cpp @@ -69,6 +69,9 @@ AP_Compass_Backend *AP_Compass_AK8963::probe(Compass &compass, AP_HAL::OwnPtr 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, AP_HAL::OwnPtr dev, enum Rotation rotation) { + if (!dev) { + return nullptr; + } AP_InertialSensor &ins = *AP_InertialSensor::get_instance(); /* Allow MPU9250 to shortcut auxiliary bus and host bus */ diff --git a/libraries/AP_Compass/AP_Compass_BMM150.cpp b/libraries/AP_Compass/AP_Compass_BMM150.cpp index 2065ccfb80..48194ea2a5 100644 --- a/libraries/AP_Compass/AP_Compass_BMM150.cpp +++ b/libraries/AP_Compass/AP_Compass_BMM150.cpp @@ -65,6 +65,9 @@ extern const AP_HAL::HAL &hal; AP_Compass_Backend *AP_Compass_BMM150::probe(Compass &compass, AP_HAL::OwnPtr dev) { + if (!dev) { + return nullptr; + } AP_Compass_BMM150 *sensor = new AP_Compass_BMM150(compass, std::move(dev)); if (!sensor || !sensor->init()) { delete sensor; diff --git a/libraries/AP_Compass/AP_Compass_HMC5843.cpp b/libraries/AP_Compass/AP_Compass_HMC5843.cpp index f2c7776399..9f7e551eb5 100644 --- a/libraries/AP_Compass/AP_Compass_HMC5843.cpp +++ b/libraries/AP_Compass/AP_Compass_HMC5843.cpp @@ -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; diff --git a/libraries/AP_Compass/AP_Compass_LSM303D.cpp b/libraries/AP_Compass/AP_Compass_LSM303D.cpp index 0763dca0ed..26498a810d 100644 --- a/libraries/AP_Compass/AP_Compass_LSM303D.cpp +++ b/libraries/AP_Compass/AP_Compass_LSM303D.cpp @@ -162,6 +162,9 @@ AP_Compass_LSM303D::AP_Compass_LSM303D(Compass &compass, AP_HAL::OwnPtr dev) { + if (!dev) { + return nullptr; + } AP_Compass_LSM303D *sensor = new AP_Compass_LSM303D(compass, std::move(dev)); if (!sensor || !sensor->init()) { delete sensor; diff --git a/libraries/AP_Compass/AP_Compass_LSM9DS1.cpp b/libraries/AP_Compass/AP_Compass_LSM9DS1.cpp index 1073cef16c..2e407ec3cc 100644 --- a/libraries/AP_Compass/AP_Compass_LSM9DS1.cpp +++ b/libraries/AP_Compass/AP_Compass_LSM9DS1.cpp @@ -60,6 +60,9 @@ extern const AP_HAL::HAL &hal; AP_Compass_Backend *AP_Compass_LSM9DS1::probe(Compass &compass, AP_HAL::OwnPtr dev) { + if (!dev) { + return nullptr; + } AP_Compass_LSM9DS1 *sensor = new AP_Compass_LSM9DS1(compass, std::move(dev)); if (!sensor || !sensor->init()) { delete sensor;