From 31297f6b8f06c7cf670bee8479c99d334e04d1d8 Mon Sep 17 00:00:00 2001 From: "jk.pu" Date: Wed, 28 Dec 2016 20:21:31 +0900 Subject: [PATCH] [HAM] fix crash when read pedometer data. when read pedometer data, pedometer_data->diffs_count has invalid value. it make infinite roof and make crash issue. verification: HAM auto tct 100% passed. Change-Id: I74ab3f49b7b5103c9f8fa24cf1f8ddcb163471de Signed-off-by: jk.pu --- src/humanactivitymonitor/humanactivitymonitor_manager.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/humanactivitymonitor/humanactivitymonitor_manager.cc b/src/humanactivitymonitor/humanactivitymonitor_manager.cc index c8e1ab99..526bef7b 100755 --- a/src/humanactivitymonitor/humanactivitymonitor_manager.cc +++ b/src/humanactivitymonitor/humanactivitymonitor_manager.cc @@ -665,6 +665,12 @@ class HumanActivityMonitorManager::Monitor::SensorMonitor : public HumanActivity ("Failed to get (%d) sensor data, error: %d (%s)", sensor_, ret, get_error_message(ret))); } + if (SENSOR_HUMAN_PEDOMETER == sensor_ ){ + //read data of pedometer does not have valid diff[] , so diff_count set 0 + const auto pedometer_data = (PedometerDataWrapper *)(&event); + pedometer_data->diffs_count = 0; + } + *data = picojson::value(picojson::object()); auto result = converter_(&event, &data->get()); if (!result) { @@ -1327,7 +1333,7 @@ HumanActivityMonitorManager::HumanActivityMonitorManager() data->insert(std::make_pair(kAccumulativeRunStepCount, picojson::value(pedometer_data->run_steps()))); auto& diffs = data->insert(std::make_pair(kStepCountDifferences, picojson::value{picojson::array{}})).first->second.get(); - + LOGGER(DEBUG) << " pedometer_data->diffs_coun: " << pedometer_data->diffs_count; if (pedometer_data->diffs_count > 0) { for (int i = 0; i < pedometer_data->diffs_count; ++i) { InsertStepDifference(pedometer_data->diffs[i].steps, getCurrentTimeStamp(pedometer_data->diffs[i].timestamp) / 1000, &diffs); -- 2.34.1