diff --git a/legacy/eeze/src/lib/eeze_sensor.c b/legacy/eeze/src/lib/eeze_sensor.c index 7e1f6b28b4..2b9055565a 100644 --- a/legacy/eeze/src/lib/eeze_sensor.c +++ b/legacy/eeze/src/lib/eeze_sensor.c @@ -41,7 +41,7 @@ EAPI Eeze_Sensor_Obj * eeze_sensor_obj_get(Eeze_Sensor_Type sensor_type) { Eina_List *l; - Eeze_Sensor_Obj *obj; + Eeze_Sensor_Obj *obj, *sens; Eeze_Sensor_Module *module; module = _highest_priority_module_get(); @@ -52,7 +52,12 @@ eeze_sensor_obj_get(Eeze_Sensor_Type sensor_type) { if (obj->type == sensor_type) { - return obj; + sens = calloc(1, sizeof(Eeze_Sensor_Obj)); + if (!sens) return NULL; + + memcpy(sens, obj, sizeof(Eeze_Sensor_Obj)); + + return sens; } } return NULL; diff --git a/legacy/eeze/src/modules/eeze_sensor_fake.c b/legacy/eeze/src/modules/eeze_sensor_fake.c index 30ab5cc3cc..a5be287b1f 100644 --- a/legacy/eeze/src/modules/eeze_sensor_fake.c +++ b/legacy/eeze/src/modules/eeze_sensor_fake.c @@ -168,7 +168,12 @@ sensor_fake_init(void) void sensor_fake_shutdown(void) { + Eeze_Sensor_Obj *sens; + eeze_sensor_module_unregister("fake"); + EINA_LIST_FREE(esensor_module->sensor_list, sens) + free(sens); + free(esensor_module); esensor_module = NULL; } diff --git a/legacy/eeze/src/modules/eeze_sensor_tizen.c b/legacy/eeze/src/modules/eeze_sensor_tizen.c index ae74f6f865..ffcc263e66 100644 --- a/legacy/eeze/src/modules/eeze_sensor_tizen.c +++ b/legacy/eeze/src/modules/eeze_sensor_tizen.c @@ -781,9 +781,14 @@ sensor_tizen_init(void) void sensor_tizen_shutdown(void) { + Eeze_Sensor_Obj *sens; + sensor_stop(sensor_handle, SENSOR_MOTION_FACEDOWN); sensor_stop(sensor_handle, SENSOR_MOTION_DOUBLETAP); eeze_sensor_module_unregister("tizen"); + EINA_LIST_FREE(esensor_module->sensor_list, sens) + free(sens); + free(esensor_module); esensor_module = NULL; }