• J
    alternates: use a separate scratch space · 597f9134
    Jeff King 提交于
    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.
    Signed-off-by: NJeff King <peff@peff.net>
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    597f9134
sha1_file.c 92.7 KB