aboutsummaryrefslogtreecommitdiffstats
path: root/src/sink.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sink.c')
-rw-r--r--src/sink.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/sink.c b/src/sink.c
index edaf271f..498935a0 100644
--- a/src/sink.c
+++ b/src/sink.c
@@ -23,18 +23,26 @@
#include <stdlib.h>
SerdSink*
-serd_sink_new(void* handle)
+serd_sink_new(void* handle, SerdFreeFunc free_handle)
{
SerdSink* sink = (SerdSink*)calloc(1, sizeof(SerdSink));
- sink->handle = handle;
+ sink->handle = handle;
+ sink->free_handle = free_handle;
+
return sink;
}
void
serd_sink_free(SerdSink* sink)
{
- free(sink);
+ if (sink) {
+ if (sink->free_handle) {
+ sink->free_handle(sink->handle);
+ }
+
+ free(sink);
+ }
}
SerdStatus