Skip to content
  • Junio C Hamano's avatar
    system_path(): always return free'able memory to the caller · 59362e56
    Junio C Hamano authored
    
    
    The function sometimes returns a newly allocated string and
    sometimes returns a borrowed string, the latter of which the callers
    must not free().  The existing callers all assume that the return
    value belongs to the callee and most of them copy it with strdup()
    when they want to keep it around.  They end up leaking the returned
    copy when the callee returned a new string because they cannot tell
    if they should free it.
    
    Change the contract between the callers and system_path() to make
    the returned string owned by the callers; they are responsible for
    freeing it when done, but they do not have to make their own copy to
    store it away.
    
    Adjust the callers to make sure they do not leak the returned string
    once they are done, but do not bother freeing it just before dying,
    exiting or exec'ing other program to avoid unnecessary churn.
    
    Reported-by: default avatarAlexander Kuleshov <kuleshovmail@gmail.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    59362e56