diff --git a/src/core/ddsc/src/dds_sertopic_builtintopic.c b/src/core/ddsc/src/dds_sertopic_builtintopic.c index 7773a13..b38deba 100644 --- a/src/core/ddsc/src/dds_sertopic_builtintopic.c +++ b/src/core/ddsc/src/dds_sertopic_builtintopic.c @@ -45,9 +45,12 @@ struct ddsi_sertopic *new_sertopic_builtintopic (enum ddsi_sertopic_builtintopic return &tp->c; } -static void sertopic_builtin_deinit (struct ddsi_sertopic *tp) +static void sertopic_builtin_free (struct ddsi_sertopic *tp) { - (void)tp; + ddsrt_free (tp->name_type_name); + ddsrt_free (tp->name); + ddsrt_free (tp->type_name); + ddsrt_free (tp); } static void free_pp (void *vsample) @@ -141,7 +144,7 @@ static void sertopic_builtin_free_samples (const struct ddsi_sertopic *sertopic_ } const struct ddsi_sertopic_ops ddsi_sertopic_ops_builtintopic = { - .deinit = sertopic_builtin_deinit, + .free = sertopic_builtin_free, .zero_samples = sertopic_builtin_zero_samples, .realloc_samples = sertopic_builtin_realloc_samples, .free_samples = sertopic_builtin_free_samples diff --git a/src/core/ddsi/include/dds/ddsi/ddsi_sertopic.h b/src/core/ddsi/include/dds/ddsi/ddsi_sertopic.h index 172af62..3f7ae75 100644 --- a/src/core/ddsi/include/dds/ddsi/ddsi_sertopic.h +++ b/src/core/ddsi/include/dds/ddsi/ddsi_sertopic.h @@ -44,7 +44,7 @@ struct ddsi_sertopic { }; /* Called when the refcount dropped to zero */ -typedef void (*ddsi_sertopic_deinit_t) (struct ddsi_sertopic *tp); +typedef void (*ddsi_sertopic_free_t) (struct ddsi_sertopic *tp); /* Zero out a sample, used for generating samples from just a key value and in cleaning up after dds_return_loan */ @@ -57,7 +57,7 @@ typedef void (*ddsi_sertopic_realloc_samples_t) (void **ptrs, const struct ddsi_ typedef void (*ddsi_sertopic_free_samples_t) (const struct ddsi_sertopic *d, void **ptrs, size_t count, dds_free_op_t op); struct ddsi_sertopic_ops { - ddsi_sertopic_deinit_t deinit; + ddsi_sertopic_free_t free; ddsi_sertopic_zero_samples_t zero_samples; ddsi_sertopic_realloc_samples_t realloc_samples; ddsi_sertopic_free_samples_t free_samples; @@ -67,8 +67,8 @@ DDS_EXPORT struct ddsi_sertopic *ddsi_sertopic_ref (const struct ddsi_sertopic * DDS_EXPORT void ddsi_sertopic_unref (struct ddsi_sertopic *tp); DDS_EXPORT uint32_t ddsi_sertopic_compute_serdata_basehash (const struct ddsi_serdata_ops *ops); -DDS_EXPORT inline void ddsi_sertopic_deinit (struct ddsi_sertopic *tp) { - tp->ops->deinit (tp); +DDS_EXPORT inline void ddsi_sertopic_free (struct ddsi_sertopic *tp) { + tp->ops->free (tp); } DDS_EXPORT inline void ddsi_sertopic_zero_samples (const struct ddsi_sertopic *tp, void *samples, size_t count) { tp->ops->zero_samples (tp, samples, count); diff --git a/src/core/ddsi/src/ddsi_sertopic.c b/src/core/ddsi/src/ddsi_sertopic.c index a309289..3ce5ef1 100644 --- a/src/core/ddsi/src/ddsi_sertopic.c +++ b/src/core/ddsi/src/ddsi_sertopic.c @@ -36,11 +36,7 @@ void ddsi_sertopic_unref (struct ddsi_sertopic *sertopic) { if (ddsrt_atomic_dec32_ov (&sertopic->refc) == 1) { - ddsi_sertopic_deinit (sertopic); - ddsrt_free (sertopic->name_type_name); - ddsrt_free (sertopic->name); - ddsrt_free (sertopic->type_name); - ddsrt_free (sertopic); + ddsi_sertopic_free (sertopic); } } } @@ -58,7 +54,7 @@ uint32_t ddsi_sertopic_compute_serdata_basehash (const struct ddsi_serdata_ops * return res; } -extern inline void ddsi_sertopic_deinit (struct ddsi_sertopic *tp); +extern inline void ddsi_sertopic_free (struct ddsi_sertopic *tp); extern inline void ddsi_sertopic_zero_samples (const struct ddsi_sertopic *tp, void *samples, size_t count); extern inline void ddsi_sertopic_realloc_samples (void **ptrs, const struct ddsi_sertopic *tp, void *old, size_t oldcount, size_t count); extern inline void ddsi_sertopic_free_samples (const struct ddsi_sertopic *tp, void **ptrs, size_t count, dds_free_op_t op); diff --git a/src/core/ddsi/src/ddsi_sertopic_default.c b/src/core/ddsi/src/ddsi_sertopic_default.c index 3fff736..81a40c7 100644 --- a/src/core/ddsi/src/ddsi_sertopic_default.c +++ b/src/core/ddsi/src/ddsi_sertopic_default.c @@ -15,6 +15,7 @@ #include #include "dds/ddsrt/md5.h" +#include "dds/ddsrt/heap.h" #include "dds/ddsi/q_bswap.h" #include "dds/ddsi/q_config.h" #include "dds/ddsi/q_freelist.h" @@ -23,9 +24,12 @@ /* FIXME: sertopic /= ddstopic so a lot of stuff needs to be moved here from dds_topic.c and the free function needs to be implemented properly */ -static void sertopic_default_deinit (struct ddsi_sertopic *tp) +static void sertopic_default_free (struct ddsi_sertopic *tp) { - (void)tp; + ddsrt_free (tp->name_type_name); + ddsrt_free (tp->name); + ddsrt_free (tp->type_name); + ddsrt_free (tp); } static void sertopic_default_zero_samples (const struct ddsi_sertopic *sertopic_common, void *sample, size_t count) @@ -76,7 +80,7 @@ static void sertopic_default_free_samples (const struct ddsi_sertopic *sertopic_ } const struct ddsi_sertopic_ops ddsi_sertopic_ops_default = { - .deinit = sertopic_default_deinit, + .free = sertopic_default_free, .zero_samples = sertopic_default_zero_samples, .realloc_samples = sertopic_default_realloc_samples, .free_samples = sertopic_default_free_samples