Junio C Hamano <gitster@xxxxxxxxx> writes: > Jacob Keller <jacob.e.keller@xxxxxxxxx> 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.