diff options
author | Nick Vaccaro <nvaccaro@google.com> | 2014-03-25 20:23:05 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-03-25 20:23:05 +0000 |
commit | 286c139bcce4107c24a3fd2122c042c98a223f49 (patch) | |
tree | e20cc95e1832d1459f649452b966f48de7ffaa81 | |
parent | 9f7332d442bf57a77820229703b8f0ae7527101e (diff) | |
parent | 93bf99647b0d33dfe12deecef828b6bcb568cafe (diff) | |
download | hardware_libhardware-286c139bcce4107c24a3fd2122c042c98a223f49.zip hardware_libhardware-286c139bcce4107c24a3fd2122c042c98a223f49.tar.gz hardware_libhardware-286c139bcce4107c24a3fd2122c042c98a223f49.tar.bz2 |
am 93bf9964: Fix sensor multi hal crash when sub-HAL reports an error
* commit '93bf99647b0d33dfe12deecef828b6bcb568cafe':
Fix sensor multi hal crash when sub-HAL reports an error
-rw-r--r-- | modules/sensors/multihal.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/modules/sensors/multihal.cpp b/modules/sensors/multihal.cpp index a145c37..36345f9 100644 --- a/modules/sensors/multihal.cpp +++ b/modules/sensors/multihal.cpp @@ -214,9 +214,11 @@ int sensors_poll_context_t::get_device_version_by_handle(int handle) { } int sensors_poll_context_t::activate(int handle, int enabled) { + int retval = -EINVAL; ALOGV("activate"); sensors_poll_device_t* v0 = this->get_v0_device_by_handle(handle); - int retval = v0->activate(v0, get_local_handle(handle), enabled); + if (v0) + retval = v0->activate(v0, get_local_handle(handle), enabled); ALOGV("retval %d", retval); return retval; } @@ -576,7 +578,8 @@ static int open_sensors(const struct hw_module_t* hw_module, const char* name, sensors_module_t *sensors_module = (sensors_module_t*) *it; struct hw_device_t* sub_hw_device; int sub_open_result = sensors_module->common.methods->open(*it, name, &sub_hw_device); - dev->addSubHwDevice(sub_hw_device); + if (!sub_open_result) + dev->addSubHwDevice(sub_hw_device); } // Prepare the output param and return |