Re: [Outreachy] Return value before or after free()?
- From
Jeff King <peff@peff.net>
- Date
- Jan 6, 2020, 21:30 UTC
- Message-ID
- <20200106213051.GD980197@coredump.intra.peff.net>
- In-Reply-To
- <CAN7CjDDBA0ZoCG9aaQf5rg3gxqny=EjR6v6jE1mnxvUJQSF_0Q@mail.gmail.com>
On Mon, Jan 06, 2020 at 10:15:53PM +0100, Miriam R. wrote:
Show 10 quoted lines
> in run-command.c file `exists_in_PATH()` function does this:
>
> static int exists_in_PATH(const char *file)
> {
> char *r = locate_in_PATH(file);
> free(r);
> return r != NULL;
> }
>
> I wonder if it is correct to do return r != NULL; after free(r);It is technically undefined behavior according to the C standard, but I think it would be hard to find an implementation where it was not perfectly fine in practice.
Ref: http://c-faq.com/malloc/ptrafterfree.html
I'd probably leave it alone unless it is causing a problem (e.g., a static analyzer complaining).
-Peff