On 11/10, Stefan Beller wrote: > @@ -500,6 +586,18 @@ void copy_pathspec(struct pathspec *dst, const struct pathspec *src) > > void clear_pathspec(struct pathspec *pathspec) > { > + int i, j; > + for (i = 0; i < pathspec->nr; i++) { > + if (!pathspec->items[i].attr_match_nr) > + continue; > + for (j = 0; j < pathspec->items[j].attr_match_nr; j++) > + free(pathspec->items[i].attr_match[j].value); > + free(pathspec->items[i].attr_match); > + if (pathspec->items[i].attr_check) > + git_attr_check_clear(pathspec->items[i].attr_check); > + free(pathspec->items[i].attr_check); > + } > + > free(pathspec->items); > pathspec->items = NULL; You may also want to add logic like this to the 'copy_pathspec' function so that when a pathspec struct is copied, the destination also has ownership of its own attribute items. -- Brandon Williams