summaryrefslogtreecommitdiff
path: root/src/libical/icalattach.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libical/icalattach.c')
-rw-r--r--src/libical/icalattach.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/libical/icalattach.c b/src/libical/icalattach.c
index d01153af..423cc27e 100644
--- a/src/libical/icalattach.c
+++ b/src/libical/icalattach.c
@@ -51,6 +51,12 @@ icalattach *icalattach_new_from_url(const char *url)
return attach;
}
+static void attach_data_free(char *data, void *free_fn_data)
+{
+ _unused(free_fn_data);
+ free(data);
+}
+
icalattach *icalattach_new_from_data(const char *data, icalattach_free_fn_t free_fn,
void *free_fn_data)
{
@@ -63,6 +69,16 @@ icalattach *icalattach_new_from_data(const char *data, icalattach_free_fn_t free
return NULL;
}
+ if (!free_fn) {
+ data = strdup(data);
+ if (!data) {
+ free(attach);
+ errno = ENOMEM;
+ return NULL;
+ }
+ free_fn = attach_data_free;
+ }
+
attach->refcount = 1;
attach->is_url = 0;
attach->u.data.data = (char *) data;