From 2c2477a07d0c9803305a365f82ec8b1d7cf39505 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Tue, 21 Jun 2016 12:50:35 +0200 Subject: [PATCH] fix sensors leaks: unsubscribe topics when exiting --- src/modules/sensors/sensors.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/modules/sensors/sensors.cpp b/src/modules/sensors/sensors.cpp index 29d248287e..4053fde20e 100644 --- a/src/modules/sensors/sensors.cpp +++ b/src/modules/sensors/sensors.cpp @@ -2279,6 +2279,33 @@ Sensors::task_main() perf_end(_loop_perf); } + for (unsigned i = 0; i < SENSOR_COUNT_MAX; i++) { + if (_gyro_sub[i] >= 0) { + orb_unsubscribe(_gyro_sub[i]); + } + + if (_accel_sub[i] >= 0) { + orb_unsubscribe(_accel_sub[i]); + } + + if (_mag_sub[i] >= 0) { + orb_unsubscribe(_mag_sub[i]); + } + + if (_baro_sub[i] >= 0) { + orb_unsubscribe(_baro_sub[i]); + } + } + + orb_unsubscribe(_rc_sub); + orb_unsubscribe(_diff_pres_sub); + orb_unsubscribe(_vcontrol_mode_sub); + orb_unsubscribe(_params_sub); + orb_unsubscribe(_rc_parameter_map_sub); + orb_unsubscribe(_manual_control_sub); + orb_unsubscribe(_actuator_ctrl_0_sub); + orb_unadvertise(_sensor_pub); + warnx("exiting."); _sensors_task = -1; px4_task_exit(ret);