fix position_estimator_inav_main: put terrain_estimator on the stack

This fixes a memory leak
This commit is contained in:
Beat Küng
2016-05-03 17:34:42 +02:00
parent 44a0981c14
commit 27d821ac9f
@@ -410,7 +410,7 @@ int position_estimator_inav_thread_main(int argc, char *argv[])
/* wait for initial baro value */ /* wait for initial baro value */
bool wait_baro = true; bool wait_baro = true;
TerrainEstimator *terrain_estimator = new TerrainEstimator(); TerrainEstimator terrain_estimator;
thread_running = true; thread_running = true;
hrt_abstime baro_wait_for_sample_time = hrt_absolute_time(); hrt_abstime baro_wait_for_sample_time = hrt_absolute_time();
@@ -1264,8 +1264,8 @@ int position_estimator_inav_thread_main(int argc, char *argv[])
} }
/* run terrain estimator */ /* run terrain estimator */
terrain_estimator->predict(dt, &att, &sensor, &lidar); terrain_estimator.predict(dt, &att, &sensor, &lidar);
terrain_estimator->measurement_update(hrt_absolute_time(), &gps, &lidar, &att); terrain_estimator.measurement_update(hrt_absolute_time(), &gps, &lidar, &att);
if (inav_verbose_mode) { if (inav_verbose_mode) {
/* print updates rate */ /* print updates rate */
@@ -1358,8 +1358,8 @@ int position_estimator_inav_thread_main(int argc, char *argv[])
global_pos.eph = eph; global_pos.eph = eph;
global_pos.epv = epv; global_pos.epv = epv;
if (terrain_estimator->is_valid()) { if (terrain_estimator.is_valid()) {
global_pos.terrain_alt = global_pos.alt - terrain_estimator->get_distance_to_ground(); global_pos.terrain_alt = global_pos.alt - terrain_estimator.get_distance_to_ground();
global_pos.terrain_alt_valid = true; global_pos.terrain_alt_valid = true;
} else { } else {