AP_Compass: cope with NULL dev pointer in driver probe functions

This commit is contained in:
Andrew Tridgell 2016-11-08 14:46:39 +11:00
parent ba9b475782
commit bd8867be38
5 changed files with 18 additions and 0 deletions

View File

@ -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,
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 */

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;