Re: [PATCH v3 2/2] setup: fix memory leaks with `struct repository_format`
- From
- Martin Ågren <martin.agren@gmail.com>
- Date
- Jan 25, 2019, 19:25 UTC
- Message-ID
- <CAN0heSr6ssaLc6kDdAzny=HxCtxfV8S0+CFJ9-HcU+O1tJ2=rQ@mail.gmail.com>
- In-Reply-To
- <20190124001450.GR423984@genre.crustytoothpaste.net>
On Thu, 24 Jan 2019 at 01:15, brian m. carlson <sandals@crustytoothpaste.net> wrote:
Show 13 quoted lines
>
> On Wed, Jan 23, 2019 at 12:57:05AM -0500, Jeff King wrote:
> > > +void clear_repository_format(struct repository_format *format)
> > > +{
> > > + string_list_clear(&format->unknown_extensions, 0);
> > > + free(format->work_tree);
> > > + free(format->partial_clone);
> > > + *format = (struct repository_format)REPOSITORY_FORMAT_INIT;
> > > +}
> >
> > ...this uses that expression not as an initializer, but as a compound
> > literal. That's also C99, but AFAIK it's the first usage in our code
> > base. I don't know if it will cause problems or not.> > Given how simple it is to fix if it turns out to be a problem, I'm OK > > including it as a weather balloon.
Thanks for pointing out this potential problem.
> It's my understanding that MSVC doesn't support this construct. If we > care about supporting MSVC, then we need to write it without the > compound literal. MSVC doesn't support any C99 feature that is not also > in C++, unfortunately.
Ok, better play it safe then. Thanks.
Martin