Re: [PATCH 09/12] mailinfo: also free strbuf lists when clearing mailinfo
From: Junio C Hamano <hidden>
Date: 2021-04-11 11:43:15
"Andrzej Hunt via GitGitGadget" [off-list ref] writes:
void clear_mailinfo(struct mailinfo *mi)
{
- int i;
-
strbuf_release(&mi->name);
strbuf_release(&mi->email);
strbuf_release(&mi->charset);
strbuf_release(&mi->inbody_header_accum);
free(mi->message_id);
- if (mi->p_hdr_data)
- for (i = 0; mi->p_hdr_data[i]; i++)
- strbuf_release(mi->p_hdr_data[i]);
- free(mi->p_hdr_data);
- if (mi->s_hdr_data)
- for (i = 0; mi->s_hdr_data[i]; i++)
- strbuf_release(mi->s_hdr_data[i]);
- free(mi->s_hdr_data);So, the original allows mi->p_hdr_data to be NULL and does not do this freeing (the same for the .s_hdr_data member).
+ strbuf_list_free(mi->p_hdr_data); + strbuf_list_free(mi->s_hdr_data);
Is it safe to feed NULL to the helper?
void strbuf_list_free(struct strbuf **sbs)
{
struct strbuf **s = sbs;
while (*s) {
strbuf_release(*s);
free(*s++);
}
free(sbs);
}