On Wed, May 31, 2017 at 05:29:20PM -0400, Jeff King wrote: > Or did you mean that diff_tree_paths() could now take an actual > array-of-struct rather than an array-of-pointer-to-struct? That would > drop the "parents_oid" array entirely. I think that's actually > orthogonal to this change (the same could have been done with the > original sha1 array), but would be a nice cleanup on top. I took a quick look at this, but it doesn't work. This caller (find_paths_multitree) would be happy to just pass the existing "parents" array. But if we change the interface to diff_tree_paths(), we also have to change ll_diff_tree_paths() to match. And that function is called from emit_path(), which really does assemble a list of pointers to non-adjacent bits of memory. So it would still have to allocate, and would now have to copy whole oids rather than just pointers. But even worse, it seems to leave some entries as NULL. We'd need some sentinel value (like the null sha1) to replace that. So I think the code is already in its simplest form. -Peff