Home
       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;
        };