Skip to content

Commit a9a3947

Browse files
committed
Fixed crash when weather forecast is not available
Fixed Date display format
1 parent 99476dc commit a9a3947

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

services/DateTime/DateTime.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,16 @@
44
#include <string.h>
55
#include <stdio.h>
66
#include "datetime_cli.h"
7+
#include "logger.h"
78

89
variant_t* datetime_get_time_string(service_method_t* method, va_list args);
910
variant_t* datetime_get_timestamp(service_method_t* method, va_list args);
1011
variant_t* datetime_time_less_than(service_method_t* method, va_list args);
1112
variant_t* datetime_time_greater_than(service_method_t* method, va_list args);
1213
variant_t* datetime_get_date_string(service_method_t* method, va_list args);
1314

15+
int DT_DATETIME;
16+
1417
void service_create(service_t** service, int service_id)
1518
{
1619
SERVICE_INIT(DateTime, "Provides date/time display")
@@ -22,7 +25,7 @@ void service_create(service_t** service, int service_id)
2225

2326

2427
(*service)->get_config_callback = datetime_cli_get_config;
25-
28+
DT_DATETIME = service_id;
2629
datetime_time_format = strdup("%H:%M");
2730
datetime_date_format = strdup("%m/%d/%Y");
2831
}
@@ -103,9 +106,11 @@ variant_t* datetime_get_date_string(service_method_t* method, va_list args)
103106
time_t t = time(NULL);
104107
struct tm* p_tm = localtime(&t);
105108

106-
char* datebuf = (char*)calloc(11, sizeof(char));
109+
char* datebuf = (char*)calloc(15, sizeof(char));
110+
111+
strftime(datebuf, 14, datetime_date_format, p_tm);
107112

108-
strftime(datebuf, 10, datetime_date_format, p_tm);
113+
LOG_DEBUG(DT_DATETIME, "Date %s with format %s", datebuf, datetime_date_format);
109114

110115
return variant_create_string(datebuf);
111116
}

services/IFTTT/IFTTT.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ variant_t* ifttt_trigger_event(service_method_t* method, va_list args)
104104
/* check for errors */
105105
if(res != CURLE_OK)
106106
{
107-
LOG_ERROR(DT_IFTTT, "curl_easy_perform() failed: %s", curl_easy_strerror(res));
107+
LOG_ERROR(DT_IFTTT, "Event trigger failed: %s", curl_easy_strerror(res));
108108
}
109109
else
110110
{

services/Weather/weather_cache.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,17 @@ void weather_cache_parse_forecast(struct json_object* weather_response_obj)
175175
stack_empty(weather_cache.forecast_hourly);
176176

177177
free(weather_cache.raw_forecast);
178+
weather_cache.raw_forecast = NULL;
178179

179180
json_object* entries_array;
180181
json_object_object_get_ex(weather_response_obj, "list", &entries_array);
182+
183+
if(NULL == entries_array)
184+
{
185+
LOG_ERROR(DT_WEATHER, "Forecast is empty");
186+
return;
187+
}
188+
181189
int weather_entries = json_object_array_length(entries_array);
182190

183191
for(int i = 0; i < weather_entries; i++)

0 commit comments

Comments
 (0)