diff options
Diffstat (limited to 'src/libical/icalattach.c')
-rw-r--r-- | src/libical/icalattach.c | 16 |
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; |