Re: [PATCH v2 1/6] remote: fix tear down of struct branch and struct remote
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jun 18, 2025, 11:20 UTC
- Message-ID
- <xmqq1prhguu3.fsf@gitster.g>
- In-Reply-To
- <xmqqldppu98s.fsf@gitster.g>
Junio C Hamano <gitster@pobox.com> writes:
Show 14 quoted lines
> Jacob Keller <jacob.e.keller@intel.com> writes: > >> We initialize branch->merge with set_merge() which is called by >> branch_get() and which is the only way for callers external to remote.c >> of getting a branch structure. >> >> The issue is that merge_nr can be non-zero because if no caller has done >> a branch_get() on the given branch, we still have merge_nr is non-zero >> and merge is NULL. > > Meaning merge_nr and merge are both uninitialized and unlikely to be > 0 and NULL? What values do they have, and if they are left > uninitialized, shouldn't we be initializing them to predictable > values?
Ah, no, I was just being stupid.
We read configuration files and accumulate things in .merge_name[] while incrementing .merge_nr but until set_merge() is called, .merge is NULL. We need to clear .merge[] only when it is not NULL, of course. And for that, it may be more readable if we had two loops.
Thanks.