fix remaining memory leaks, 4 still reachable due to libc - ics2txt - convert icalendar .ics file to plain text HTML git clone git://bitreich.org/ics2txt git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ics2txt DIR Log DIR Files DIR Refs DIR Tags DIR README --- DIR commit 9c990aa7ff527f1b12ce915e7d8d4148d6fb0438 DIR parent 5364436bda9ac04c42dbd6eeaab75914128046b6 HTML Author: Josuah Demangeon <me@josuah.net> Date: Mon, 29 Jun 2020 00:06:33 +0200 fix remaining memory leaks, 4 still reachable due to libc Diffstat: M ics2tree.c | 12 +++++------- M src/ical.c | 12 ++++-------- M src/ical.h | 3 +-- 3 files changed, 10 insertions(+), 17 deletions(-) --- DIR diff --git a/ics2tree.c b/ics2tree.c @@ -40,12 +40,11 @@ print_ical_tree_vnode(struct ical_vnode *node, int level) if (node == NULL) return; print_ruler(level); - fprintf(stdout, "node %p %s child=%lu next=%p\n", - (void *)node, node->name, node->child.len, (void *)node->next); + fprintf(stdout, "node %s\n", node->name); for (size_t i = 0; i < node->values.len; i++) print_ical_tree_value(node->values.entry[i].value, level + 1); - for (size_t i = 0; i < node->child.len; i++) - print_ical_tree_vnode(node->child.entry[i].value, level + 1); + for (size_t i = 0; i < node->childs.len; i++) + print_ical_tree_vnode(node->childs.entry[i].value, level + 1); print_ical_tree_vnode(node->next, level); } @@ -59,7 +58,7 @@ print_ical_tree(FILE *fp) die("reading ical file: %s", ical_strerror(e)); print_ical_tree_vnode(vcal.root, 0); - fprintf(stdout, ": end\n"); + fprintf(stdout, "end\n"); fflush(stdout); ical_free_vcalendar(&vcal); @@ -79,13 +78,12 @@ main(int argc, char **argv) for (; *argv != NULL; argv++, argc--) { FILE *fp; - info("converting \"%s\"", *argv); + debug("converting \"%s\"", *argv); if ((fp = fopen(*argv, "r")) == NULL) die("opening %s", *argv); if (print_ical_tree(fp) < 0) die("converting %s", *argv); fclose(fp); } - return 0; } DIR diff --git a/src/ical.c b/src/ical.c @@ -86,8 +86,7 @@ ical_new_value(char const *line) void ical_free_value(struct ical_value *value) { - debug("free value %p (%s:%s)", value, value->name, value->value); - map_free(&value->param, free); + map_free(&value->param, NULL); free(value); } @@ -154,9 +153,8 @@ ical_free_vnode(struct ical_vnode *node) { if (node == NULL) return; - debug("free vnode %p %s", node, node->name); map_free(&node->values, ical_free_value_void); - map_free(&node->child, ical_free_vnode_void); + map_free(&node->childs, ical_free_vnode_void); ical_free_vnode(node->next); free(node); } @@ -205,8 +203,8 @@ ical_begin_vnode(struct ical_vcalendar *vcal, char const *name) if (vcal->root == NULL) { vcal->root = new; } else { - new->next = map_get(&vcal->current->child, new->name); - if (map_set(&vcal->current->child, new->name, new) < 0) { + new->next = map_get(&vcal->current->childs, new->name); + if (map_set(&vcal->current->childs, new->name, new) < 0) { e = -ICAL_ERR_SYSTEM; goto err; } @@ -247,7 +245,6 @@ ical_push_value(struct ical_vcalendar *vcal, struct ical_value *new) if (vcal->current == NULL) return -ICAL_ERR_MISSING_BEGIN; - debug("new %p %s:%s", new, new->name, new->value); new->next = map_get(&vcal->current->values, new->name); if (map_set(&vcal->current->values, new->name, new) < 0) return -ICAL_ERR_SYSTEM; @@ -287,6 +284,5 @@ err: void ical_free_vcalendar(struct ical_vcalendar *vcal) { - debug("free vcalendar"); ical_free_vnode(vcal->root); } DIR diff --git a/src/ical.h b/src/ical.h @@ -35,9 +35,8 @@ struct ical_vcalendar { struct ical_vnode { char name[32]; - time_t beg, end; struct map values; /*(struct ical_value *)*/ - struct map child; /*(struct ical_vnode *)*/ + struct map childs; /*(struct ical_vnode *)*/ struct ical_vnode *next; };