goto FREE_MEMORY;
}
- hal_sensor_funcs = (hal_backend_sensor_funcs **)malloc(sizeof(hal_backend_sensor_funcs *) * hal_sensor_count);
+ hal_sensor_funcs = (hal_backend_sensor_funcs **)calloc(hal_sensor_count, sizeof(*hal_sensor_funcs));
if (!hal_sensor_funcs) {
_E("Failed to allocate memory.");
goto FREE_MEMORY;
}
+ for(i = 0; i < hal_sensor_count; i++) {
+ hal_sensor_funcs[i] = (hal_backend_sensor_funcs *)calloc(1, sizeof(**hal_sensor_funcs));
+ if (!hal_sensor_funcs[i]) {
+ _E("Failed to allocate memory.");
+ goto FREE_MEMORY;
+ }
+ }
+
for(i = 0; i < hal_sensor_count; i++) {
ret_getbackend = hal_common_get_backend_with_library_name(HAL_MODULE_SENSOR, (void **)&hal_sensor_funcs[i], hal_sensor_names[i]);
if (ret_getbackend < 0) {
_E("Failed to get backend (%s)", hal_sensor_names[i]);
- } else
+ FREE(hal_sensor_funcs[i]);
+ } else {
loaded_backend++;
+ }
}
if (loaded_backend == 0) {
return 0;
FREE_MEMORY:
+ if (hal_sensor_funcs != NULL) {
+ for (int i = 0; i < hal_sensor_count; ++i)
+ FREE(hal_sensor_funcs[i]);
+ FREE(hal_sensor_funcs);
+ }
+
for(i = 0; i < hal_sensor_count; i++)
FREE(hal_sensor_names[i]);
for (i = 0; i < hal_sensor_count; i++) {
if (hal_sensor_funcs[i]) {
hal_common_put_backend_with_library_name(HAL_MODULE_SENSOR, (void *)hal_sensor_funcs[i], hal_sensor_names[i]);
+ FREE(hal_sensor_funcs[i]);
}
FREE(hal_sensor_names[i]);
}