Index | Thread | Search

From:
Claudio Jeker <cjeker@diehard.n-r-g.com>
Subject:
Re: expr(1) makes a tiny memory leak
To:
Biarder <mss091204.1@gmail.com>
Cc:
tech@openbsd.org
Date:
Tue, 30 Jun 2026 10:10:00 +0200

Download raw body.

Thread
On Tue, Jun 30, 2026 at 12:07:56PM +0700, Biarder wrote:
> Hello.
> 
> The final result returned by eval0() is never freed. It is a tiny
> leak, so I'm not sure whether a change is worthwhile.

There is no leak. return from main frees all memory.
This is extra complication for zero gain.
 
> Best regards,
> Biarder
> 
> Index: expr.c
> ===================================================================
> RCS file: /cvs/src/bin/expr/expr.c,v
> diff -u -p -r1.28 expr.c
> --- expr.c	28 Jan 2022 05:15:05 -0000	1.28
> +++ expr.c	30 Jun 2026 04:58:33 -0000
> @@ -494,6 +494,7 @@ int
>  main(int argc, char *argv[])
>  {
>  	struct val     *vp;
> +	int		result;
>  
>  	if (pledge("stdio", NULL) == -1)
>  		err(2, "pledge");
> @@ -514,5 +515,7 @@ main(int argc, char *argv[])
>  	else
>  		printf("%s\n", vp->u.s);
>  
> -	return is_zero_or_null(vp);
> +	result = is_zero_or_null(vp);
> +	free_value(vp);
> +	return result;
>  }
> 

-- 
:wq Claudio