Skip to content
  • Jeff King's avatar
    clean up name allocation in prepare_revision_walk · 1da1e07c
    Jeff King authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    When we enter prepare_revision_walk, we have zero or more
    entries in our "pending" array. We disconnect that array
    from the rev_info, and then process each entry:
    
      1. If the entry is a commit and the --source option is in
         effect, we keep a pointer to the object name.
    
      2. Otherwise, we re-add the item to the pending list with
         a blank name.
    
    We then throw away the old array by freeing the array
    itself, but do not touch the "name" field of each entry. For
    any items of type (2), we leak the memory associated with
    the name. This commit fixes that by calling object_array_clear,
    which handles the cleanup for us.
    
    That breaks (1), though, because it depends on the memory
    pointed to by the name to last forever. We can solve that by
    making a copy of the name. This is slightly less efficient,
    but it shouldn't matter in practice, as we do it only for
    the tip commits of the traversal.
    
    Signed-off-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    1da1e07c