diff options
-rw-r--r-- | calendar/ChangeLog | 1 | ||||
-rw-r--r-- | calendar/cal-util/calobj.c | 16 | ||||
-rw-r--r-- | calendar/calobj.c | 16 | ||||
-rw-r--r-- | calendar/pcs/calobj.c | 16 |
4 files changed, 37 insertions, 12 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog index 962c9a5026..1bd14e83a0 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -2,6 +2,7 @@ * calobj.c (ical_new): Added mandatory status property. (ical_object_to_vobject): Only store "related" list if it exists. + (store_list): Add terminating null char and free the correct data. * main.c (save_calendar_cmd): Implemented calendar saving. (open_calendar_cmd): Implemented calendar loading. diff --git a/calendar/cal-util/calobj.c b/calendar/cal-util/calobj.c index 641c3fbf8b..47d8c8a97e 100644 --- a/calendar/cal-util/calobj.c +++ b/calendar/cal-util/calobj.c @@ -676,15 +676,23 @@ store_list (VObject *o, char *prop, GList *values, char sep) len += strlen (l->data) + 1; result = g_malloc (len); - for (p = result, l = values; l; l = l->next){ + + for (p = result, l = values; l; l = l->next) { int len = strlen (l->data); strcpy (p, l->data); - p [len] = sep; - p += len+1; + + if (l->next) { + p [len] = sep; + p += len+1; + } else + p += len; } + + *p = 0; + addPropValue (o, prop, result); - g_free (p); + g_free (result); } static char *recur_type_name [] = { "D", "W", "MP", "MD", "YM", "YD" }; diff --git a/calendar/calobj.c b/calendar/calobj.c index 641c3fbf8b..47d8c8a97e 100644 --- a/calendar/calobj.c +++ b/calendar/calobj.c @@ -676,15 +676,23 @@ store_list (VObject *o, char *prop, GList *values, char sep) len += strlen (l->data) + 1; result = g_malloc (len); - for (p = result, l = values; l; l = l->next){ + + for (p = result, l = values; l; l = l->next) { int len = strlen (l->data); strcpy (p, l->data); - p [len] = sep; - p += len+1; + + if (l->next) { + p [len] = sep; + p += len+1; + } else + p += len; } + + *p = 0; + addPropValue (o, prop, result); - g_free (p); + g_free (result); } static char *recur_type_name [] = { "D", "W", "MP", "MD", "YM", "YD" }; diff --git a/calendar/pcs/calobj.c b/calendar/pcs/calobj.c index 641c3fbf8b..47d8c8a97e 100644 --- a/calendar/pcs/calobj.c +++ b/calendar/pcs/calobj.c @@ -676,15 +676,23 @@ store_list (VObject *o, char *prop, GList *values, char sep) len += strlen (l->data) + 1; result = g_malloc (len); - for (p = result, l = values; l; l = l->next){ + + for (p = result, l = values; l; l = l->next) { int len = strlen (l->data); strcpy (p, l->data); - p [len] = sep; - p += len+1; + + if (l->next) { + p [len] = sep; + p += len+1; + } else + p += len; } + + *p = 0; + addPropValue (o, prop, result); - g_free (p); + g_free (result); } static char *recur_type_name [] = { "D", "W", "MP", "MD", "YM", "YD" }; |