Subject: Re: Re*: [PATCH] change contract between system_path and it's callers

From: Junio C Hamano <[email-masked]>
Date: Mon, 24 Nov 2014 12:50:07 -0800

Alex Kuleshov <[email-masked]> writes:

>> One thing to note is that this illustration does not consider memory
>> pointed at by the "system_wide" variable here (from attr.c)
>>
>>         static const char *git_etc_gitattributes(void)
>>         {
>>                 static const char *system_wide;
>>                 if (!system_wide)
>>                         system_wide = system_path(ETC_GITATTRIBUTES);
>>                 return system_wide;
>>         }
>>
>> at the point of process exit as a "leak".
>
> But why? We allocated memory to "system_wide" with system_path, next git
> will exit somewhere with die, but system_wide didn't free... Or i'm
> wrong here too?

It is in the same league as "static const char *git_dir" and friends
that appear in the file-scope-static of environment.c.  Keeping small
things around to be cleaned up by exit() is not a crime.