From: Timo Hirvonen Date: Mon, 03 Jul 2006 14:17:51 GMT Subject: Re: [PATCH] Make git-fmt-merge-msg a builtin Message-ID: <20060703171751.2ed33220.tihirvon@gmail.com> In-Reply-To: Johannes Schindelin wrote: > +struct list { > + char **list; > + void **payload; > + unsigned nr, alloc; > +}; How about something like this instead to reduce mallocs to half and simplify the code? struct item { char *value; void *payload; }; struct list { struct item *items; unsigned int nr, alloc; }; (But I realize this isn't performance critical) > +static void append_to_list(struct list *list, char *value) Add void *payload parameter too, would simplify the code. > +static void free_list(struct list *list) > +{ > + int i; > + > + if (list->alloc == 0) > + return; Unnecessary if nr is 0 too. > + for (i = 0; i < list->nr; i++) { > + free(list->list[i]); > + if (list->payload[i]) > + free(list->payload[i]); free(NULL) is safe. > + } > + free(list->list); > + free(list->payload); > + list->nr = list->alloc = 0; > +} > + if (!strncmp(line, "branch ", 7)) { > + origin = strdup(line + 7); > + append_to_list(&(src_data->branch), origin); Parenthesis isn't needed. > + head->object.flags |= UNINTERESTING; > + prepare_revision_walk(rev); Spaces.. > + if (merge_summary) { > + struct commit *head; > + struct rev_info rev; > + > + head = lookup_commit(head_sha1); > +parse_object(head->object.sha1); > +head = head->parents->item; Indentation. -- http://onion.dynserv.net/~timo/