On Sun, Jul 22, 2018 at 07:48:33AM +0200, Christian Couder wrote: > + /* > + * We process only trees, as commits and tags have already been handled > + * (and passed their marks on to root trees, as well. We must make sure > + * to process them in descending tree-depth order so that marks > + * propagate down the tree properly, even if a sub-tree is found in > + * multiple parent trees. > + */ > + todo = xmalloc(to_pack->nr_objects * sizeof(*todo)); I was fiddling with "make coccicheck", and it looks like this code could stand some modernization. This could use ALLOC_ARRAY(). > + for (i = 0; i < to_pack->nr_objects; i++) { > + if (oe_type(&to_pack->objects[i]) == OBJ_TREE) > + todo[nr++] = &to_pack->objects[i]; > + } > + qsort(todo, nr, sizeof(*todo), cmp_tree_depth); And this QSORT(). There are a few others, I won't list them all. The only tricky one I see is: > + free(tree->buffer); > + tree->buffer = NULL; > + tree->object.parsed = 0; This suggests FREE_AND_NULL(), but I think it actually the whole block should become a call to free_tree_buffer(). -Peff