Re: [PATCH v3 09/10] fetch: fetch unpopulated, changed submodules
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 24, 2022, 21:30 UTC
- Message-ID
- <xmqqy220j6kf.fsf@gitster.g>
- In-Reply-To
- <20220224100842.95827-10-chooglen@google.com>
Glen Choo <chooglen@google.com> writes:
Show 9 quoted lines
> + char *path;
> /* The submodule commits that have changed in the rev walk. */
> struct oid_array new_commits;
> };
> @@ -818,6 +828,7 @@ struct changed_submodule_data {
> static void changed_submodule_data_clear(struct changed_submodule_data *cs_data)
> {
> oid_array_clear(&cs_data->new_commits);
> + free(cs_data->path);OK.
Show 9 quoted lines
> } > > static void collect_changed_submodules_cb(struct diff_queue_struct *q, > @@ -865,6 +876,8 @@ static void collect_changed_submodules_cb(struct diff_queue_struct *q, > if (!item->util) > item->util = xcalloc(1, sizeof(struct changed_submodule_data)); > cs_data = item->util; > + cs_data->super_oid = commit_oid; > + cs_data->path = xstrdup(p->two->path);
Iffy. If item->util were populated already, wouldn't cs_data already have its .path member pointing at an allocated piece of memory? Can we safely free it before assigning a new value, or does somebody else still have a copy of .path and we cannot free it?