Skip to content
  • Jeff King's avatar
    use strbuf_complete to conditionally append slash · 00b6c178
    Jeff King authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    When working with paths in strbufs, we frequently want to
    ensure that a directory contains a trailing slash before
    appending to it. We can shorten this code (and make the
    intent more obvious) by calling strbuf_complete.
    
    Most of these cases are trivially identical conversions, but
    there are two things to note:
    
      - in a few cases we did not check that the strbuf is
        non-empty (which would lead to an out-of-bounds memory
        access). These were generally not triggerable in
        practice, either from earlier assertions, or typically
        because we would have just fed the strbuf to opendir(),
        which would choke on an empty path.
    
      - in a few cases we indexed the buffer with "original_len"
        or similar, rather than the current sb->len, and it is
        not immediately obvious from the diff that they are the
        same. In all of these cases, I manually verified that
        the strbuf does not change between the assignment and
        the strbuf_complete call.
    
    This does not convert cases which look like:
    
      if (sb->len && !is_dir_sep(sb->buf[sb->len - 1]))
    	  strbuf_addch(sb, '/');
    
    as those are obviously semantically different. Some of these
    cases arguably should be doing that, but that is out of
    scope for this change, which aims purely for cleanup with no
    behavior change (and at least it will make such sites easier
    to find and examine in the future, as we can grep for
    strbuf_complete).
    
    Signed-off-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    00b6c178