git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3 1/3] lockfile.c: remove PATH_MAX limitation (except in resolve_symlink)

From
Torsten Bögershausen <tboegi@web.de>
Date
Aug 2, 2014, 18:13 UTC
Message-ID
<53DD2A54.1030403@web.de>
In-Reply-To
<xmqqtx5wuma8.fsf@gitster.dls.corp.google.com>
On 08/01/2014 07:55 PM, Junio C Hamano wrote:
Show 56 quoted lines
> Junio C Hamano <gitster@pobox.com> writes:
>
>> Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:
>>
>>> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
>> Somewhat underexplained, given that it seems to add some new
>> semantics.
>>
>>> +static void clear_filename(struct lock_file *lk)
>>> +{
>>> +	free(lk->filename);
>>> +	lk->filename = NULL;
>>> +}
>> It is good to abstract out lk->filename[0] = '\0', which used to be
>> the way we say that we are done with the lock.  But I am somewhat
>> surprised to see that there aren't so many locations that used to
>> check !!lk->filename[0] to see if we are done with the lock to require
>> a corresponding wrapper.
>>
>>>   static void remove_lock_file(void)
>>>   {
>>>   	pid_t me = getpid();
>>>   
>>>   	while (lock_file_list) {
>>>   		if (lock_file_list->owner == me &&
>>> -		    lock_file_list->filename[0]) {
>>> +		    lock_file_list->filename) {
>> ... and this seems to be the only location?
> While looking at possible fallout of merging this topic to any
> branch, I am starting to suspect that it is probably a bad idea for
> clear-filename to free lk->filename.  I am wondering if it would be
> safer to do:
>
>   - in lock_file(), free lk->filename if it already exists before
>     what you do in that function with your series;
>
>   - update "is this lock already held?" check !!lk->filename[0] to
>     check for (lk->filename && !!lk->filename[0]);
>
>   - in clear_filename(), clear lk->filename[0] = '\0', but do not
>     free lk->filename itself.
>
> Then existing callers that never suspected that lk->filename can be
> NULL and thought that it does not need freeing can keep doing the
> same thing as before without leaking nor breaking.
>
> If we want to adopt the new world order at once, alternatively, you
> can keep the code in this series but then lk->filename needs to be
> renamed to something that the current code base has not heard of to
> force breakage at the link time for us to notice.
>
> I grepped for 'lk->filename' and checked if the ones in read-cache.c
> and refs.c are OK (they seem to be), but that is not a very robust
> check.
>
> I dunno.

My first impression reading this patch was to rename clear_filename() into free_and_clear_filename() or better free_filename(), but I never pressed the send button ;-)

Reading the discussion above makes me wonder if lk->filename may be replaced by a strbuf some day, and in this case clear_filename() will become reset_filenmae() ?

Previous: Junio C HamanoNext: Duy Nguyen
Message 20 of 27 in “Make locked paths absolute when current directory is changed”
  1. Make locked paths absolute when current directory is changedNguyễn Thái Ngọc Duy, Jul 18, 2014
  2. Junio C HamanoJul 18, 2014
  3. Duy NguyenJul 19, 2014
  4. Johannes SixtJul 18, 2014
  5. 1/2 lockfile.c: remove PATH_MAX limitation (except in resolve_symlink)Nguyễn Thái Ngọc Duy, Jul 20, 2014
  6. 2/2 Make locked paths absolute when current directory is changedNguyễn Thái Ngọc Duy, Jul 20, 2014
  7. Ramsay JonesJul 21, 2014
  8. Duy NguyenJul 21, 2014
  9. Ramsay JonesJul 21, 2014
  10. Junio C HamanoJul 21, 2014
  11. Duy NguyenJul 23, 2014
  12. Yue Lin HoJul 31, 2014
  13. Duy NguyenJul 31, 2014
  14. Philip OakleyJul 20, 2014
  15. Duy NguyenJul 20, 2014
  16. 0/3 Keep .lock file paths absoluteNguyễn Thái Ngọc Duy, Jul 31, 2014
  17. 1/3 lockfile.c: remove PATH_MAX limitation (except in resolve_symlink)Nguyễn Thái Ngọc Duy, Jul 31, 2014
  18. Junio C HamanoAug 1, 2014
  19. Junio C HamanoAug 1, 2014
  20. Torsten BögershausenAug 2, 2014
  21. Duy NguyenAug 4, 2014
  22. Junio C HamanoAug 4, 2014
  23. Michael HaggertyAug 5, 2014
  24. Yue Lin HoSep 3, 2014
  25. Junio C HamanoAug 1, 2014
  26. 2/3 lockfile.c: remove PATH_MAX limit in resolve_symlink()Nguyễn Thái Ngọc Duy, Jul 31, 2014
  27. 3/3 lockfile.c: store absolute pathNguyễn Thái Ngọc Duy, Jul 31, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.