From: Junio C Hamano Date: Wed, 18 Jun 2025 11:20:04 GMT Subject: Re: [PATCH v2 1/6] remote: fix tear down of struct branch and struct remote Message-ID: In-Reply-To: Junio C Hamano writes: > Jacob Keller 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.