From 1abda4d6d97c3386694f85fe5f7cc6844ade67c2 Mon Sep 17 00:00:00 2001 From: bpc2003 Date: Tue, 20 May 2025 14:03:29 -0400 Subject: Add freemap function --- src/include/xml/free.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/include/xml/free.c (limited to 'src/include/xml/free.c') diff --git a/src/include/xml/free.c b/src/include/xml/free.c new file mode 100644 index 0000000..bbf3369 --- /dev/null +++ b/src/include/xml/free.c @@ -0,0 +1,36 @@ +#include + +#include "xml.h" + +void freemap(map_t *map) +{ + if (map->n_attrs) { + for (int i = 0; i < map->n_attrs; ++i) { + free(map->attrs[i].id); + free(map->attrs[i].value); + } + free(map->attrs); + } + if(map->size == sizeof(map_t)) { + for (int i = 0; i < map->n; ++i) { + map_t *pl = (map_t *)map->payload; + if (pl[i].n_attrs) { + for (int j = 0; j < pl[i].n_attrs; ++j) { + free(pl[i].attrs[j].id); + free(pl[i].attrs[j].value); + } + free(pl[i].attrs); + } + if (pl[i].size == sizeof(map_t)) + freemap(pl[i].payload); + else + free(pl[i].payload); + free(pl[i].tag); + } + free(map->payload); + } + else + free(map->payload); + free(map->tag); + free(map); +} -- cgit v1.2.3