On Tue, Dec 06, 2022 at 09:46:37AM +0100, Esben Haabendal wrote: > Even when readline() returns an empty buffer, we still need to free() it to > avoid leaking memory. > Good point. > Signed-off-by: Esben Haabendal <esben@xxxxxxxxxx> As per the README, you should prefix your subject with [libgpiod] to better get the attention of the libgpiod team. > --- > tools/gpioset.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/tools/gpioset.c b/tools/gpioset.c > index c49d229870d2..f087003af1c9 100644 > --- a/tools/gpioset.c > +++ b/tools/gpioset.c > @@ -768,8 +768,12 @@ static void interact(struct gpiod_line_request **requests, > fflush(stdout); > > line = readline(PROMPT); > - if (!line || line[0] == '\0') > + if (!line) > continue; > + if (line[0] == '\0') { > + free(line); > + continue; > + } > Given free() is null-aware, I would just add the free before the continue, rather than splitting out the cases, so line = readline(PROMPT); - if (!line || line[0] == '\0') + if (!line || line[0] == '\0') { + free(line); continue; + } Cheers, Kent. > for (i = strlen(line) - 1; (i > 0) && isspace(line[i]); i--) > line[i] = '\0'; > -- > 2.38.1 >