On Mon, Oct 3, 2016 at 1:35 PM, Jeff King <peff@xxxxxxxx> wrote: > The alternate_object_database struct uses a single buffer > both for storing the path to the alternate, and as a scratch > buffer for forming object names. This is efficient (since > otherwise we'd end up storing the path twice), but it makes > life hard for callers who just want to know the path to the > alternate. They have to remember to stop reading after > "alt->name - alt->base" bytes, and to subtract one for the > trailing '/'. > > It would be much simpler if they could simply access a > NUL-terminated path string. We could encapsulate this in a > function which puts a NUL in the scratch buffer and returns > the string, but that opens up questions about the lifetime > of the result. The first time another caller uses the > alternate, the scratch buffer may get other data tacked onto > it. > > Let's instead just store the root path separately from the > scratch buffer. There aren't enough alternates being stored > for the duplicated data to matter for performance, and this > keeps things simple and safe for the callers. > Definitely agree here. The resulting code seems a lot easier to follow, and making the callers simpler here is a very goo thing. Thanks, Jake