[Alarm] - fixing bugs in AlarmManager
authorAndrzej Popowski <a.popowski@samsung.com>
Mon, 8 Jun 2015 10:43:13 +0000 (12:43 +0200)
committerAndrzej Popowski <a.popowski@samsung.com>
Mon, 8 Jun 2015 10:43:13 +0000 (12:43 +0200)
Change-Id: I6b795de2884a8b6264b199fad812e979821350d3
Signed-off-by: Andrzej Popowski <a.popowski@samsung.com>
src/alarm/alarm_manager.cc

index d1f0df9..da1226a 100755 (executable)
@@ -159,6 +159,12 @@ void AlarmManager::Add(const picojson::value& args, picojson::object& out) {
     struct tm *start_date;
 
     start_date = localtime(&second);
+    if (start_date == nullptr) {
+      LoggerE("Invalid date.");
+      ReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Invalid date."), &out);
+      return;
+    }
+
     mktime(start_date);
 
     char str_date[kDateSize];
@@ -316,7 +322,7 @@ PlatformResult AlarmManager::GetAlarm(int id, picojson::object& obj) {
     obj.insert(std::make_pair("min", picojson::value(std::to_string(date.tm_min))));
     obj.insert(std::make_pair("sec", picojson::value(std::to_string(date.tm_sec))));
 
-    int interval = 0, byDayValue = 0;
+    int interval = 0;
 
     app_control_get_extra_data(app_control, kAlarmAbsoluteRecurrenceTypeKey, &alarm_type);
 
@@ -329,6 +335,14 @@ PlatformResult AlarmManager::GetAlarm(int id, picojson::object& obj) {
 
       obj.insert(std::make_pair("second", picojson::value(std::to_string(interval))));
     } else if (!strcmp(alarm_type, kAlarmAbsoluteReccurrenceTypeByDayValue)) {
+      int byDayValue = 0;
+
+      ret = alarm_get_scheduled_recurrence_week_flag(id, &byDayValue);
+      if (ALARM_ERROR_NONE != ret) {
+        LoggerE("Failed to get data.");
+        return PlatformResult(ErrorCode::NOT_FOUND_ERR, "Failed to get data.");
+      }
+
       picojson::array& array =
           obj.insert(std::make_pair("second", picojson::value(picojson::array())))
           .first->second.get<picojson::array>();