From: Junio C Hamano Date: Mon, 13 Jun 2022 23:03:08 GMT Subject: Re: [PATCH 5/5] branch: fix branch_checked_out() leaks Message-ID: In-Reply-To: <6cd7db33-6ab5-9843-4483-4cce9835b177@github.com> Derrick Stolee writes: > while (worktrees[i]) { > + char *old; > struct wt_status_state state = { 0 }; > struct worktree *wt = worktrees[i++]; > > if (wt->is_bare) > continue; > > - if (wt->head_ref) > - strmap_put(¤t_checked_out_branches, > - wt->head_ref, > - xstrdup(wt->path)); > + if (wt->head_ref) { > + old = strmap_put(¤t_checked_out_branches, > + wt->head_ref, > + xstrdup(wt->path)); > + free(old); > + } While it is equivalent to free(strmap_put(¤t_checked_out_branches, wt->head_ref, xstrdup(wt->path))); writing the "put the new one" and "discard the old one (if exists)" as separate steps like the above does make it easier to follow, at least to me. Thanks. Will queue.